Текущий архив: 2004.01.16;
Скачать: CL | DM;
Вниз
Народ подскажите что здесь не так!!! Найти похожие ветки
← →
Alexandra (2003-12-25 21:53) [0]Пишу этот код:
procedure TABOOTRUNMF.SpeedButton2Click(Sender: TObject);
var i:integer;
begin
try
for i:=0 to ABRLB.Items.Count-1 do
if ABRLB.Selected[i] then
begin
DeleteFile(ABRLB.Items.Strings[i]);
ABRLB.Items.Delete(i);
end;
except
on e:exception do
begin
MessageDlg(e.Message,mtError,[mbok],0);
end;
end;
end;
а компилятор выдает вот это:
List index out of bounds (1)
почему он выдает что не находит индекс, ведь все верно...
← →
Ihor Osov'yak (2003-12-25 21:57) [1]Во первых, не компилятор.. Это рантайм ошибка.
Которая происходит от того, что при каждом удалении происходит уменшение количество элементов, и рано или поздно произойдет исключение, которое у вас происхлдит.. Сорри, за несовсем литературный стиль :-)
Делайте так:
for i:=ABRLB.Items.Count-1 downto 0 do
далее по тексту
идея, надеюсь, понятная..
← →
Юрий Зотов (2003-12-25 22:01) [2]> Ihor Osov"yak © (25.12.03 21:57) [1]
> и рано или поздно произойдет исключение
А точнее, не рано и не поздно, а ровно посередине.
:о)
← →
Fredericco (2003-12-25 22:03) [3]Я бы побоялся это в for делать.
В данном случае лучше while.
← →
Ihor Osov'yak (2003-12-25 22:05) [4]2 [2] Юрий Зотов © (25.12.03 22:01)
Все верно, сер.. Но можно же иногда похвилосовствовать.. А можно и нет. Например, на тему, что такое "ровно середина" :-)
← →
Юрий Зотов (2003-12-25 22:06) [5]> Ihor Osov"yak © (25.12.03 22:05) [4]
Это центр города Ровно.
:о)
← →
Ihor Osov'yak (2003-12-25 22:10) [6]2 [3] Fredericco © (25.12.03 22:03)
Имеет смысл в случае многотопочной работы, если ABRLB.Items может модифицироваться в нескольких потоках одновременно, но там своя песня ... И стиль цыкла несет там главные грабли ..
Или еще в случае угрозы неявной рекурсии, инициализируемой из тела цыкла. Что, во первых, здесь не наблюдается, а если бы и наблюдалось, то бы был совет подумать об архитектуре..
← →
Ihor Osov'yak (2003-12-25 22:14) [7]o [6]
несет -> не несет
зы - пофлеймить меня потянуло.. На снег, наверное..
2 Юрий Зотов
:-)
← →
Alexandra (2003-12-26 08:45) [8]Народ может кто нибудь точно подскажет какой выход из этого?
← →
Думкин (2003-12-26 08:56) [9]> [8] Alexandra (26.12.03 08:45)
Издеваешься? Тебе ответили сполна, хотя бы первым ответным постом.
Страницы: 1 вся ветка
Текущий архив: 2004.01.16;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c