Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Помогите с ListBox   Найти похожие ветки 

 
Cerberus ©   (2005-12-03 19:35) [0]

Ну жно в лист боксе найти имя и удалить его пробую этот код, но ни чего не выходит.
for f:=0 to ListBox1.Items.Count-1 do if ListBox1.Items.Strings[f] = user then listbox1.Items.Delete(f);


 
Antonn ©   (2005-12-03 19:40) [1]

что такое user?
регистрозависимость есть.
и нужно
for f:=ListBox1.Items.Count-1 downto 0 do


 
begin...end ©   (2005-12-03 19:40) [2]

Крутите цикл в обратную сторону (downto). И не совсем понятно, почему не выходите из цикла сразу после удаления. Или возможно, что в списке будет несколько элементов, удовлетворяющих условию?


 
Cerberus ©   (2005-12-03 19:46) [3]


> что такое user?

Переменная.
> begin...end ©   (03.12.05 19:40) [2]

Маловероятно.
А что даст прокрутка цикла в обратную сторону?


 
Antonn ©   (2005-12-03 19:51) [4]

Cerberus ©   (03.12.05 19:46) [3]
Переменная.

да ну?
:)

> А что даст прокрутка цикла в обратную сторону?

догадайся. AV при удалении хоть одной строки, как минимум.


 
Cerberus ©   (2005-12-03 19:56) [5]

Нифига не выходит.


 
begin...end ©   (2005-12-03 20:01) [6]

> Cerberus ©   (03.12.05 19:46) [3]

Начальное и конечное значение счётчика цикла for вычисляется только один раз (перед его исполнением), а не на каждом проходе. При прямом цикле получаем следующее: нижняя граница -- 0, верхняя граница -- число, на единицу меньшее количества элементов в списке. Если хотя бы один из элементов будет удалён, то реальное количество элементов в списке уменьшится, а верхняя граница останется прежней (она не перевычисляется). А вот при проходе цикла в обратную сторону такого не будет, хотя границы также будут вычислены лишь единожды. Подумайте, почему.

> Antonn ©   (03.12.05 19:51) [4]

>> А что даст прокрутка цикла в обратную сторону?
> догадайся. AV при удалении хоть одной строки, как минимум.

Прокрутка в обратную сторону даст AV? :-)
Да и при прямом проходе будет не AV, а EStringListError.

> Cerberus ©   (03.12.05 19:56) [5]

Ждём код, содержимое ListBox, образец для поиска и симптомы того, что "нифига не выходит".


 
Cerberus ©   (2005-12-03 20:13) [7]

Вощем Содержимое ListBox:
Sabaka
Cerberus
Ekzot
и в таком духе

То есть на одну строчку одно слово.
нужо найти к примеру Sabaka и удалить эту строку.
>  что "нифига не выходит".

Тоесть ничего не происходит.


 
ListBox   (2005-12-03 20:26) [8]


procedure TForm1.Button1Click(Sender: TObject);
var f:word;
begin
 f:=0;
 while  f<ListBox1.Items.Count do
    begin
      if ListBox1.Items.Strings[f] = "user" then listbox1.Items.Delete(f);
      f:=f+1;
    end;
end;


 
begin...end ©   (2005-12-03 20:31) [9]

> Cerberus ©   (03.12.05 20:13) [7]

Уфф... Там может быть только одна такая строчка, или их может быть несколько?

> ListBox   (03.12.05 20:26) [8]

if ListBox1.Items.Strings[f] = "user" then
 ListBox1.Items.Delete(f)
else
 f := f + 1;

иначе, если две строки подряд будут, то не удалит.



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
14-1132643010
syte_ser78
2005-11-22 10:03
2005.12.18
что с компом?


1-1132773228
pound
2005-11-23 22:13
2005.12.18
Как нормально прекратить работу потока


14-1132938352
Fl@sh
2005-11-25 20:05
2005.12.18
Приглашение в Украину!!


14-1132893659
konda
2005-11-25 07:40
2005.12.18
Глюки печати из Acrobat Reader


1-1132759968
Ling
2005-11-23 18:32
2005.12.18
TVirtualStringTree - Ловкость рук и никакого мошенничества