Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

Где моя ошибка?   Найти похожие ветки 

 
Ross ©   (2002-04-27 19:22) [0]

Помогите. Не могу разобраться:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
begin
i:=0;
try
if MessageDlg("Confirm!",
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
for i:=0 to RxCheckListBox1.Items.Count-1 do
begin
if RxCheckListBox1.Checked[i]=true then
RxCheckListBox1.Items.Delete(i);
end;
end
else
except
...
end;
end;


Вылетает ошибка:
---------------------------
Debugger Exception Notification
---------------------------
Project Dere.exe raised exception class EStringListError with message "List index out of bounds (3)". Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


 
Шурко   (2002-04-27 19:32) [1]

Твоя ошибка в цикле
for i:=0 to RxCheckListBox1.Items.Count-1 do
:)))
перебор I например от 0 до 9 , а если 5 елемент удалить ????

надо писать:
for i:=RxCheckListBox1.Items.Count-1 downto 0 do

или :
I:=0;
while I<RxCheckListBox1.Items.Count do
if ... then RxCheckListBox1.Items.delete(I)
else inc(I);

Удачи и поменьше таких ляпов :)))).


 
Ally ©   (2002-04-27 19:33) [2]

Возможно все дело в том, что в теле цикла у Вас удаляются итемы, изначальное число которых было задано при входе посредством
> RxCheckListBox1.Items.Count-1
, которое, разумеется, изменяется при удалении, но кол-во заданных циклов остается прежним и i нарастает в соответствии с ним - здесь возникает ситуация, когда вы пытаетесь удалить, скажем, i-й итем, а у вас их уже i-2 из-за Delet"а в теле цикла.
Надеюсь, что не очень путано объяснил ситуацию :)

Удачи.


 
Ross ©   (2002-04-27 19:41) [3]

Точно. Спасибо Шурко и Ally. Не подумал. Но теперь буду знать точно.
Еще раз спасибо.



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

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
14-39841
Condor
2002-04-04 10:56
2002.05.13
Copy


1-39702
Serd_hhc
2002-04-29 15:52
2002.05.13
Удаление папки...


14-39852
Alx2
2002-04-04 15:57
2002.05.13
Задачка


1-39689
tsarevep
2002-04-29 12:02
2002.05.13
RichText и ListBox


1-39779
Мало опыта
2002-04-28 20:20
2002.05.13
Сохранить.