Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.006 c
2-1209015542
Foo Fighters
2008-04-24 09:39
2008.05.25
Как в искать пустые записи в ADO?


2-1209049870
lobach
2008-04-24 19:11
2008.05.25
Передача нескольких строк Post


15-1207771555
TIF
2008-04-10 00:05
2008.05.25
Ура! 11 000 000 статей MSDN будут переведены на русский язык...


15-1207999338
No_Dead
2008-04-12 15:22
2008.05.25
Немного о windows


2-1209287511
Алексей К.
2008-04-27 13:11
2008.05.25
Изменение св-ва caption у элемента TActionList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский