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

Вниз

Тупой вопрос   Найти похожие ветки 

 
Comp   (2002-11-14 17:11) [0]

Люди, как , ПРАВИЛЬНО! удалить стороки из Лист Бокса???
Когда удаляю 1-ну строку - то ничего, а когда несколько через оператор Фор, то он прежде чем удалить проп....дит что-то типа List index out of bounds (номер строки), а потом удалит.
Что это значит?


 
Андрей Прокофьев   (2002-11-14 17:12) [1]

пиши For i := ListBox1.Count - 1 downto 0 do


 
Smithson   (2002-11-14 17:15) [2]

ListBox.Clear - это все
Теперь про итерации. При удалении данных из списков ни в коем случае нельзя использовать цикл фор! Надо так

I := 0;
while I < LixtBox1.Count do ListBox1.Items.Delete(I);

Но еще раз повторю - удалять все быстрее через Clear.


 
Андрей Прокофьев   (2002-11-14 17:15) [3]

Если все то еще ListBox1.Items.Clear


 
OlegMsc   (2002-11-14 17:17) [4]

при удалении индексы смещаются
скорее всего удаляешь строку с УЖЕ не существующим индексом


 
MBo   (2002-11-14 17:18) [5]

>Smithson
>ни в коем случае нельзя
Не только можно, но это и быстрее (конечно, при выборочном удалении)


 
Андрей Прокофьев   (2002-11-14 17:21) [6]

Smithson © (14.11.02 17:15)
>>При удалении данных из списков ни в коем случае нельзя >>использовать цикл фор!
?!!
for i := 0 to Self.ListBox1.Count - 1 do
Self.ListBox1.Items.Delete (0);

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





 
Smithson   (2002-11-14 17:29) [7]

но в этой ситуации еще быстрее будет ListBox1.Clear;
А вот если удаление выборочное (здесь играть, здесь не играть, ...), то через фор геморойно будет


 
Smithson   (2002-11-14 17:31) [8]

А при while все дчень просто

I := 0;
while I < ListBox1.Count do
if Надо удалять then ListBox1.Delete(I)
else Inc(I);


Я не прав?


 
Андрей Прокофьев   (2002-11-14 17:32) [9]

2 Smithson © (14.11.02 17:29)
через While не "здоровее" :)


 
Smithson   (2002-11-14 17:33) [10]

?


 
Андрей Прокофьев   (2002-11-14 17:36) [11]

Smithson © (14.11.02 17:33)
Не видел Вашего постинга и теперь согласен :)


 
MBo   (2002-11-14 17:37) [12]

>Smithson
вот упрямый какой ;)

for i := Items.Count-1 downto 0 do
if (условие) then Items.Delete(i);
это и короче (else нет), и легче читается, и быстрее, т.к. цикл for шустрее while и объем сдвигаемых при удалении данных (кусков массива указателей) суммарно меньше



 
Андрей Прокофьев   (2002-11-14 17:39) [13]

Smithson © (14.11.02 17:33)
Нет, не согласен
for i := Self.ListBox1.Count - 1 downto 0 do
if Удалить then
Self.ListBox1.Items.Delete(i);


 
Skier   (2002-11-14 17:43) [14]

Господа, Repeat... Until - FOREVER ! :)))


 
Андрей Прокофьев   (2002-11-14 17:45) [15]

Skier © (14.11.02 17:43)
еще лучше label и goto !!!


 
Игорь Шевченко   (2002-11-14 17:47) [16]

И все эти циклы будут тормозить жутко, так как при каждом удалении будет происходить перерисовка ListBox.

Все, кроме ListBox.Items.Clear.

С уважением,


 
Skier   (2002-11-14 17:47) [17]

>Андрей Прокофьев
Тоже вариант ! :)


 
Smithson   (2002-11-14 17:52) [18]

Вариант.


 
Андрей Прокофьев   (2002-11-14 17:59) [19]

2 Игорь Шевченко © (14.11.02 17:47)
Насчет ListBox.Items.Clear никто и не спорит
мы уже не про удаление ВСЕХ строк
:)


 
DieHard   (2002-11-14 18:17) [20]

2Игорь Шевченко:
а если с BeginUpdate/EndUpdate? :)


 
Comp   (2002-11-14 18:57) [21]

Всем спасибо за советы, вашу страницу сохраню.
Мне действительно надо выборочно удалять, но теперь ясно одно -
Нумерация оказывается смещается!!!
Теперь ясно.



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

Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
14-82942
esu
2002-11-06 03:48
2002.11.25
Дети в романах С. Лукьяненко


1-82706
maveric
2002-11-14 17:56
2002.11.25
Вопрос про RichEdit


14-83006
AL2002
2002-11-07 13:13
2002.11.25
Налоговая рулит


3-82627
MetalFan
2002-11-05 15:43
2002.11.25
RxDbGrid


1-82739
Zike
2002-11-15 11:01
2002.11.25
Получение нескольких Результатов функции





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский