Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

-->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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.056 c
2-1142429241
Megabyte
2006-03-15 16:27
2006.04.02
Запрос логина и пароля текущего пользователя БД


11-1123514368
Seeket
2005-08-08 19:19
2006.04.02
Edit и OnKeyDown


4-1137144109
Andrey C
2006-01-13 12:21
2006.04.02
Програмный клик мышки


4-1137331762
Volf_555
2006-01-15 16:29
2006.04.02
Как закрыть всплывающее меню в SystemTray когда оно теряет фокус?


2-1141739126
Tort
2006-03-07 16:45
2006.04.02
Запретить крыску





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский