Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2007, 16:36   #1
kodov
 
Регистрация: 19.03.2007
Сообщений: 8
По умолчанию Поиск в ListBox

Здравствуйте!
Помогите пожалуйста разобраться с проблемой.
Есть код:
var
i: integer;
flag: boolean;
begin
if personslist.Items.Count=0 then
begin
showmessage('There are no elements to find');
mainform.Show;
end
else if edit1.Text='' then begin
showmessage('Enter something to find');
mainform.Show;
end;
i:=0;
flag:=false;
repeat
if Pos(LowerCase(Edit1.Text),LowerCase (personslist.Items.Strings[i]))<>0 then
begin
personslist.Selected[i]:=true;
n:=i;
flag:=true;
end;
inc(i);
until (i=personslist.Count-1) or (flag=true);
end;
Этот код работает, но когда в списке более 300 элементов,то
поиск подглючивает. Он никак не хочет находить последние несколько элементов.
Заранее спасибо.
kodov вне форума Ответить с цитированием
Старый 19.03.2007, 17:55   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вроде явных грубых ошибок не видно, но:
1. После mainform.Show; должно следовать exit; Думаю, понятно, почему...
2. Гораздо проще цикл организовать так:
for i:=0 to personslist.Items.Count-1 do
begin
....
if not flag then
break;
......
end;
3. Условие по Pos лучше cделать так: if Pos(....)>0 then
Сейчас не вспомню, но в каких-то случаях эта функция может возвращать -1.

Кстати, обратите внимание на вашу строку "until (i=personslist.Count-1) or (flag=true);"

Последний раз редактировалось mihali4; 19.03.2007 в 17:58.
mihali4 вне форума Ответить с цитированием
Старый 19.03.2007, 20:58   #3
kodov
 
Регистрация: 19.03.2007
Сообщений: 8
По умолчанию

Спасибо за ответ.
kodov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в listbox, но дургой Черничный Общие вопросы Delphi 3 30.06.2008 21:28
Поиск в ListBox Spectre Компоненты Delphi 9 14.01.2008 20:04
[ C# ]::[ ListBox ] Fire.id Общие вопросы .NET 1 13.01.2008 21:07
из ListBox в БД Spectre БД в Delphi 5 31.12.2007 13:58
Поиск записей в ListBox Askat БД в Delphi 1 18.06.2007 10:05