Главная страница
    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.008 c
2-1209241078
gamez
2008-04-27 00:17
2008.05.25
Возведение в степень


11-1189583530
robt
2007-09-12 11:52
2008.05.25
Где ошибка ?


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


15-1207818305
user_
2008-04-10 13:05
2008.05.25
Поиск суммы


15-1207991877
@!!ex
2008-04-12 13:17
2008.05.25
Запрет запуска приложений





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский