![]() |
|
#1
|
||||
|
||||
![]() Имеем ListBox(cd), нужно проанализировать и удалить оттуда ненужные строки.
Вот код: Код:
var i:integer; begin for i:=1 to cd.Items.Count do begin if cd.Items[i] = 'test1' then cd.Items.Delete(i); if cd.Items[i] = 'test2' then cd.Items.Delete(i); if cd.Items[i] = 'test' then cd.Items.Delete(i); end; end; ![]() |
#2
|
|||
|
|||
![]() Код:
var i:integer; begin for i:=cd.Items.Count-1 downto 0 do begin if cd.Items[i] = 'test1' then cd.Items.Delete(i); if cd.Items[i] = 'test2' then cd.Items.Delete(i); if cd.Items[i] = 'test' then cd.Items.Delete(i); end; |
#3
|
||||
|
||||
![]() Всё дело в том, что когда из списка удаляется элемент, то все идущие после него сдвигаются(напр: идёшь от 1 до 5 - удалил 3 элемент и 4 и 5 стали 3 и 4, отсюда все ошибки), поэтому и надо проверять список с конца.
Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
||||
|
||||
![]() Цитата:
Код:
for i:=cd.Items.Count-1 downto 0 do begin if cd.Items[i] = 'test1' then cd.Items.Delete(i); end; for i:=cd.Items.Count-1 downto 0 do begin if cd.Items[i] = 'test2' then cd.Items.Delete(i); end; for i:=cd.Items.Count-1 downto 0 do begin if cd.Items[i] = 'test' then cd.Items.Delete(i); end; |
#5
|
||||
|
||||
![]() А не легче
Код:
for i:=cd.Items.Count-1 downto 0 do if (cd.Items[i] = 'test1') or (cd.Items[i] = 'test2') or (cd.Items[i] = 'test') then cd.Items.Delete(i); Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#6
|
||||
|
||||
![]() Цитата:
![]() |