Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.04.2012, 10:00
Аватар для Erilar
Erilar Erilar вне форума
Новичок
 
Регистрация: 30.03.2011
Сообщения: 91
Версия Delphi: 7
Репутация: 10
Вопрос Отфильтровать Листбокс

На форме листбокс и эдит.
В листбоксе несколько строк:
0001, 0002, 0011, 1112.
Как сделать чтобы при записи в эдит, в листбоксе отфильтровывались строки? Например.
Эдит - 1, листбокс - 0001, 0011, 1112.
Эдит - 2, листбокс - 0002, 1112.
Эдит - 011, листбокс - 0011.
__________________
Если программа даёт неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Ответить с цитированием
  #2  
Старый 06.04.2012, 14:48
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Код:
i:=0;
repeat
if (Pos(Edit1.text,listbox1.items[i])=0) then listbox1.items[i].delete;
i++
until i=listbox1.count-1;
Ответить с цитированием
  #3  
Старый 06.04.2012, 15:49
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от PS11011010
Код:
i:=0;
repeat
if (Pos(Edit1.text,listbox1.items[i])=0) then listbox1.items[i].delete;
i++
until i=listbox1.count-1;
Только inc(i); а не i++
Ответить с цитированием
  #4  
Старый 06.04.2012, 15:52
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

и else перед inc(i)/i++
Ответить с цитированием
  #5  
Старый 06.04.2012, 15:52
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Можно так. Чтобы покороче.
Код:
 For i:= 0 to (listbox1.count - 1) do 
if (Pos(Edit1.text,listbox1.items[i])=0) then listbox1.items[i].delete;

Последний раз редактировалось nixel, 06.04.2012 в 15:55.
Ответить с цитированием
  #6  
Старый 06.04.2012, 16:07
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Pyro
и else перед inc(i)/i++
ммм... серьезно, зачем?
Расскажите, пожалуйста, может у меня ошибка в логике.
Ответить с цитированием
  #7  
Старый 06.04.2012, 16:12
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

ну я так понял, после удаления не надо изменять i, т.к. элементы сами сместятся и под тем же i уже будет новый элемент
другими словами без else будет перепрыгивать некоторые элементы, не проверяя
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
nixel (06.04.2012)
  #8  
Старый 06.04.2012, 16:15
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Если ты удалил итем, на его место стает следующий. И еще в конце все-равно сортировать листбокс нужно - по возрастанию чтоли.
Ответить с цитированием
  #9  
Старый 06.04.2012, 16:19
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Pyro
ну я так понял, после удаления не надо изменять i, т.к. элементы сами сместятся и под тем же i уже будет новый элемент
другими словами без else будет перепрыгивать некоторые элементы, не проверяя
оу, действительно. спасибо. Тогда лучше не делать через for, дабы не изменять счетчик (компилятор варнинги выдает, не любит он это дело =))
Ответить с цитированием
  #10  
Старый 06.04.2012, 16:39
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Цитата:
Сообщение от Pyro
и else перед inc(i)/i++
Слушай, и правда! Недавно похожий алгоритм писал, а сейчас поторопился...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025