Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.026 c
3-49438
alexEagle
2003-12-18 12:09
2004.01.16
Сохранение свойств колонок DBGrida при открытии/закрытии датасета


3-49386
Patrick
2003-12-22 09:21
2004.01.16
Настройка Oracle.


14-49713
McSimm
2003-12-26 10:50
2004.01.16
« По Вашим письмам »


1-49492
rimd
2004-01-03 19:10
2004.01.16
Окна


3-49390
Denis555
2003-12-19 19:03
2004.01.16
TTable не хочет отправлять изменения на MSSQL