Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Вниз
Поиск строки в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c