Главная страница
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.01 c
1-39746
Zuker
2002-04-27 21:25
2002.05.13
Определитель


1-39752
Феликс
2002-04-27 22:44
2002.05.13
Как сделать, чтобы у определенной строки в Listbox был свой цвет.


1-39729
Stexen
2002-04-26 23:06
2002.05.13
зВУУУУКККККККККККККККККККК


6-39811
YOjick
2002-02-28 15:50
2002.05.13
Что-то странное с сокетами


14-39831
VID
2002-04-03 12:37
2002.05.13
ЖК Монитор - 2