Вниз
Скачать: 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.03 c
4-1137272874
Delphi_is_cool
2006-01-15 00:07
2006.04.02
Убрать края у окна


2-1141726763
nap<>
2006-03-07 13:19
2006.04.02
UPX


1-1141204858
BFG9k
2006-03-01 12:20
2006.04.02
Правильное использование WriteBuffer/ReadBuffer в IndyTCPClient


15-1141972607
WondeRu
2006-03-10 09:36
2006.04.02
Рабство vs Армия


3-1139309450
John_Doe
2006-02-07 13:50
2006.04.02
Referential Integrity,не пускает удалить.




   Наверх