Вниз
Скачать: CL | DM;

-->listbox удаляет строки через одну, почему????<--   Найти похожие ветки 

← →
MaSZ ©   (2006-03-08 21:34) [0]

Обычным циклом пытаюсь удалить все из листбокса, но строки удаляються через одну, почему??
Вот листинг:
for i:=0 to form1.ListBox1.Items.Count do form1.ListBox1.Items.Delete(i);

Предположительно указатель перемещаеться на сл. строку, но как тогда этого избежать?


← →
Anatoly Podgoretsky ©   (2006-03-08 21:35) [1]

А на бумажке рассписать, что получается не можешь?


← →
Loginov Dmitry ©   (2006-03-08 21:36) [2]

Delete(0);


← →
TUser ©   (2006-03-08 21:36) [3]

После удаления строки индексы всех последующих строк меняются. Используй цикл
for i:=Count-1 downto 0 do
 Delete (i);


← →
Юрий Зотов ©   (2006-03-08 21:39) [4]

> MaSZ ©   (08.03.06 21:34)  

with ListBox1.Items do
 for i := Count - 1 downto 0 do Delete(i);

А вообще, ListBox1.Clear.


← →
iZEN ©   (2006-03-08 22:32) [5]

>Юрий Зотов ©   (08.03.06 21:39) [4]
>for i := Count - 1 downto 0 do Delete(i);
По сути верно, но в общем случае неправильно.
Здесь без критической секции не обойтись. Нужно блокировать список на время обновления. Если несколько нитей попытаются изменить количество элементов в нём...чудеса обеспечены.


← →
Труп Васи Доброго ©   (2006-03-08 22:45) [6]

iZEN ©   (08.03.06 22:32) [5]
По сути верно, но в общем случае неправильно.


Вообще говоря (если уж припёрло удалять по одной строке), то прав

> Loginov Dmitry ©   (08.03.06 21:36) [2] [Новое
>сообщение][Ответить]
> Delete(0);
Только этот Delete(0) надо упаковать в While, тогда нифига блокировать не надо, пусть вставляет хоть кто до посинения, один хрен удалится.


← →
Труп Васи Доброго ©   (2006-03-08 22:46) [7]

Короче говоря надо так:
while (listbox1.Items.Count>0) do
   begin
     listbox1.Items.Delete(0);
   end;


← →
Юрий Зотов ©   (2006-03-08 23:20) [8]

> iZEN ©   (08.03.06 22:32) [5]

Ваше замечание о многоточности особенно актуально для визуального компонента и для человека, спрашивающего, как очистить ListBox.


← →
Юрий Зотов ©   (2006-03-08 23:22) [9]

многоПОточности, конечно.


← →
Marser ©   (2006-03-08 23:32) [10]

Удалено модератором
Примечание: офтопик


← →
Юрий Зотов ©   (2006-03-09 00:32) [11]

Удалено модератором
Примечание: офтопик


← →
Marser ©   (2006-03-09 00:44) [12]

Удалено модератором
Примечание: офтопик (почтой нельзя разве повспоминать?)


← →
Marser ©   (2006-03-09 01:05) [13]

> Примечание: офтопик (почтой нельзя разве повспоминать?)

Дайте адрес. У меня действующего нет.


← →
Marser ©   (2006-03-09 01:06) [14]

Присоединяюсь к [8], именно это я и хотел сказать. Не исключаю, что Изен стебётся...

> Юрий Зотов ©

С возвращением!



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.05 c
6-1135158139
Фредди
2005-12-21 12:42
2006.04.02
IndyFTP (9) и чудеса с окном во время аплода


2-1142514252
zorik
2006-03-16 16:04
2006.04.02
Какую СУБД выбрать?


11-1123414583
EVILDeath
2005-08-07 15:36
2006.04.02
Опять proxies =(


15-1141641390
Некто
2006-03-06 13:36
2006.04.02
Когда-то здесь было сообщение про crossover и FreeBSD


15-1141740830
sniknik
2006-03-07 17:13
2006.04.02
Программный рейд, striple... WinXP




   Наверх