ďťż

Ł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
  •