Ĺadny brzuch
Witam. W tej oto procedurze: procedure TMainForm.bbRemoveClick(Sender: TObject);
var
Index, ItemSel : Integer;
begin
Index := lbEventsList.ItemIndex;
ItemSel := lbEventsList.SelCount;
if ItemSel = 0 then
begin
MessageDlg('You must select at least one event!', mtWarning,[mbOK], 0);
Exit;
end;
if ItemSel = 1then
if MessageDlg('Are you sure to remove this record?', mtConfirmation,
[mbYes, mbNo], 0) <> mrYes then
Exit
else
begin
TEvent(EventsList[Index]).Free;
EventsList.Delete(Index);
WriteRecords;
RefreshList;
end;
if ItemSel > 1 then
if MessageDlg('Are you sure to remove these records?', mtConfirmation,
[mbYes, mbNo], 0) <> mrYes then
Exit
else
begin
repeat
TEvent(EventsList[Index]).Free;
EventsList.Delete(Index);
WriteRecords;
RefreshList;
until
ItemSel = 0;
end;
end; pojawia się błąd podczas użytkowania "List index out of bounds(0)". A na dodatek nie usuwa tych elementów co powinna. Dlaczego? :huh:
begin repeat TEvent(EventsList[Index]).Free; EventsList.Delete(Index); WriteRecords; RefreshList; dec(ItemSel);// !!!!! until ItemSel = 0; end;
Błąd już nie występuje, ale i tak procedura nie działa tak jak powinna. Mam np. elementy A,B,C,D; zaznaczam B i D żeby je usunąć. Klikam i zostają skasowane elementy B i C zamiast B i D...
procedure TForm1.Button1Click(Sender: TObject); var i, s:integer; begin s:=lbEventsList.SelCount; if s=0 then MessageBox(Handle,'Musisz wybrac co najmniej jeden element!','',MB_OK+MB_ICONEXCLAMATION) else if s=1 then begin if MessageBox(Handle,'Czy chcesz usunac dany element?','',MB_YESNO+MB_ICONQUESTION)=ID_YES then begin TEvent(EventsList[lbEventList.ItemIndex]).Free; lbEventsList.DeleteSelected; WriteRecords; RefreshList; end; end else if s>1 then if MessageBox(Handle,'Czy chcesz usunac zaznaczone elementy?','',MB_YESNO+MB_ICONQUESTION)=ID_YES then begin for i:=s-1 downto 0 do if lbEventsList.Selected[i] then TEvent(EventsList[Index]).Free; WriteRecords; RefreshList; lbEventsList.DeleteSelected; end; end;
Użytkownik Cyrkiel edytował ten post 25 luty 2006, 20:49
Kolejno "Invalid pointer operation" , "I/O Error 32" no i oczywiście "Acces violation" :(
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
begin repeat TEvent(EventsList[Index]).Free; EventsList.Delete(Index); WriteRecords; RefreshList; dec(ItemSel);// !!!!! until ItemSel = 0; end;
Błąd już nie występuje, ale i tak procedura nie działa tak jak powinna. Mam np. elementy A,B,C,D; zaznaczam B i D żeby je usunąć. Klikam i zostają skasowane elementy B i C zamiast B i D...
procedure TForm1.Button1Click(Sender: TObject); var i, s:integer; begin s:=lbEventsList.SelCount; if s=0 then MessageBox(Handle,'Musisz wybrac co najmniej jeden element!','',MB_OK+MB_ICONEXCLAMATION) else if s=1 then begin if MessageBox(Handle,'Czy chcesz usunac dany element?','',MB_YESNO+MB_ICONQUESTION)=ID_YES then begin TEvent(EventsList[lbEventList.ItemIndex]).Free; lbEventsList.DeleteSelected; WriteRecords; RefreshList; end; end else if s>1 then if MessageBox(Handle,'Czy chcesz usunac zaznaczone elementy?','',MB_YESNO+MB_ICONQUESTION)=ID_YES then begin for i:=s-1 downto 0 do if lbEventsList.Selected[i] then TEvent(EventsList[Index]).Free; WriteRecords; RefreshList; lbEventsList.DeleteSelected; end; end;
Użytkownik Cyrkiel edytował ten post 25 luty 2006, 20:49
Kolejno "Invalid pointer operation" , "I/O Error 32" no i oczywiście "Acces violation" :(