Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.042 c
1-1140940938
Mishenka
2006-02-26 11:02
2006.04.02
Автоматическое изменение размеров картинки в TImage


15-1141965621
Steepe Wolf
2006-03-10 07:40
2006.04.02
QuickReport для BDS 2006


2-1142500691
Fenix
2006-03-16 12:18
2006.04.02
Встевить рисунок в StatusBar


15-1141896338
Зм1й
2006-03-09 12:25
2006.04.02
Проблемы с локалкой


15-1141968672
nap<>
2006-03-10 08:31
2006.04.02
Сервисы