Текущий архив: 2003.10.27;
Скачать: CL | DM;
Вниз
Помогите удалить пустые строки из ListBox a Найти похожие ветки
← →
Brutus (2003-10-16 12:50) [0]Подскажите, как можно в цикле for удалить из ListBox"а все пустые стоки? Пробовал вот так:
for i:=0 to Listbox1.Items.Count do
if Listbox2.Items[i]="" then
Listbox1.Items.Delete(i);
Но упрямо выскакивает ошибка List out of bounds (92) в то время как у меня всего 72 элемента в листбоксе.
← →
Skier (2003-10-16 12:52) [1]Затверди как строевой устав ! :
for i := Listbox1.Items.Count - 1 downto 0 do
← →
panov (2003-10-16 12:52) [2]for i := Listbox1.Items.Count -1 downto 0 do
← →
Brutus (2003-10-16 13:34) [3]Спасибо большое!
← →
афвуд (2003-10-16 18:22) [4]Чувство у меня такое, что не получится ничего. Надо
for i:=0 to Listbox1.Items.Count-1 do
if Listbox2.Items[i]="" then
begin
Listbox1.Items.Delete(i);
dec(i);//или i:=i-1;
end;
← →
MBo (2003-10-16 18:28) [5]>афвуд ©
Чувство тебя подвело
← →
pasha_golub (2003-10-16 18:32) [6]При том очень подвело, такую конструкцию даже компилятор не пропустит.
← →
WithOut Any ... (2003-10-16 18:44) [7]panov © (16.10.03 12:52) [2] Дал хорошую (правильную)рекомендацию!
Но мне кажется, что было логичнее установить фильтр при формировании листбокса, чтобы пустые строки в нем не появлялись
← →
mOOx_ (2003-10-16 18:58) [8]Кстати, мемя давно интересовал вопрос: почему
for i:=Listbox1.Items.Count-1 downto 0 do ...
предпочтительнее
for i:=0 to Listbox1.Items.Count-1 do ...
Я постоянно вторым пользуюсь и даволен.
← →
Плохиш_ (2003-10-16 19:08) [9]>mOOx_ © (16.10.03 18:58) [8]
Потому что Listbox1.Items.Count-1 высчисляется один раз и если в цикле удалить item сам понимаешь что получится ;-)
← →
mOOx_ (2003-10-16 19:18) [10]А я думал, что каждый раз вычисляется :(. И правда. Спасибо за просветление :)
← →
default (2003-10-16 19:52) [11]
по-любому ListBox1.Items.Count - 1 один раз считается
по приведённым циклам вариант for i := 0 to ListBox1.Items.Count - 1 do;
выглядит более предпочтительным (i типа Byte тут)
// for i := 0 to ListBox1.Items.Count - 1 do;
// inc byte ptr [i]
// dec al
// jnz -$0A
// for i := ListBox1.Items.Count - 1 downto 0 do;
// dec byte ptr [ebx]
// cmp byte ptr [ebx], $ff
// jnz -$07
← →
Anatoly Podgoretsky (2003-10-16 20:34) [12]mOOx_ © (16.10.03 19:18) [10]
Думать не надо, надо читать справку
For purposes of controlling execution of the loop, the expressions initialValue and finalValue are evaluated only once, before the loop begins.
Страницы: 1 вся ветка
Текущий архив: 2003.10.27;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c