Главная страница
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.018 c
14-49769
sever-Rds
2003-12-24 01:40
2004.01.16
Клановость во власти


1-49496
S@shka
2004-01-03 15:39
2004.01.16
Можно ли свободно использовать TStringList в разных потоках?


3-49388
pavell
2003-12-20 15:14
2004.01.16
SQl-запросы


6-49656
Timerman
2003-11-10 23:10
2004.01.16
Как синхронизировать время с локалкой?


14-49755
Petrovich
2003-12-23 22:50
2004.01.16
Помогите с компонентом!