Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Поиск строки в StringGrid   Найти похожие ветки 

 
Эд   (2008-04-30 07:50) [0]

Написал как мог поиск строки в первой колонке StringGrid-а.
Не устраивает скорость поиска, есть ли более быстрый способ ?

function fLoc_grid (Value : String) : Boolean;
var
 i : Integer;
 res : Boolean;
begin          
 res := False;
 for i:= 1 to frmAdd.SG.RowCount - 1 do
 begin
   if frmAdd.SG.Cells[0, i] = Value then res := True;
 end;
 result := res;
end;


 
korneley ©   (2008-04-30 07:59) [1]

frmAdd.SG.Cols.IndexOf(Val) >= 0?


 
korneley ©   (2008-04-30 08:01) [2]

frmAdd.SG.Cols[0].IndexOf(Val) >= 0, естественно :)


 
Эд   (2008-04-30 08:26) [3]

> Korneley ©   (30.04.08 08:01) [2]

Да, спасибо огромное :)


 
Anatoly Podgoretsky ©   (2008-04-30 08:55) [4]

Конечно есть и много, но даже в этом варианте, почему ты крутишь до конца всю таблицу, даже если нужное в первой строке. Переделай IF
Зачем нужна лишняя переменная res, чем прямая Result не устраивает?


 
Эд   (2008-04-30 09:09) [5]

Да, точно .. Вы верно подметили. Я Break не поставил и Res наверное тоже лишнее... А если так то какая из функций чисто теоретически должна быстрее работать, "SG.Cols[0].IndexOf(Val)" или "function fLoc_grid (Value : String) : Boolean;" ?


 
Сергей М. ©   (2008-04-30 09:20) [6]


> какая из функций чисто теоретически должна быстрее работать


теоретически - без разницы, и там и здесь используется цикл перебора-сравнения.


 
korneley ©   (2008-04-30 09:24) [7]


> Эд   (30.04.08 09:09) [5]

А что, в гриде много строк? Если да, возникает вопрос: "Зачем?". Если нет, то уже не важно, кто быстрее. И, как мне кажется правильным, обработка отдельно, отображение обработанного - отдельно. Ну, и чисто практически :), замерить нужно, или в исходники анализировать. Вы готовы? :))


 
Эд   (2008-04-30 09:29) [8]

Строк очень много ...  Вопрос снят :) Буду использовать

> korneley ©   (30.04.08 08:01) [2]
> frmAdd.SG.Cols[0].IndexOf(Val) >= 0, естественно :)


 
Sergey13 ©   (2008-04-30 09:32) [9]

> [8] Эд   (30.04.08 09:29)
> Строк очень много ...  

А они случайно не из БД?


 
Anatoly Podgoretsky ©   (2008-04-30 12:32) [10]


> теоретически - без разницы, и там и здесь используется цикл
> перебора-сравнения.

Не согласен, если список сортирован, то двоичный поиск, к StringGrid конечно не относится.
Но рассмотрим обычный случай, IndexOf в любом случае быстрее, поскольку отсутствует лишняя перегрузка. Ну а теоритически без разницы, да и слова тут на доверии, истина в профилирование.



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1205853787
Андрей_К
2008-03-18 18:23
2008.05.25
Симпотичные VCL компоненты


15-1208166366
kami
2008-04-14 13:46
2008.05.25
2 модема на одном компьютере


2-1208943662
azamatufa
2008-04-23 13:41
2008.05.25
Paradox7 - структура данных, help.


15-1207986208
legandr
2008-04-12 11:43
2008.05.25
Перевернулась система координат в AutoCAD


2-1209473190
worldmen
2008-04-29 16:46
2008.05.25
Прикрутить hlp файл к проге.