Thema: Delphi Einführung in Pointer

Einzelnen Beitrag anzeigen

bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#23

Re: Einführung in Pointer

  Alt 8. Apr 2005, 16:40
Und gleich im Anschluß eine Antwort hierauf:

Zitat von DGL-luke:
Delphi-Quellcode:
//globale vars
var currentbox:^TListBox;

procedure TForm1.LBbeforeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
currentbox:=@sender;

end;

procedure TForm1.deleteClick(Sender: TObject);
begin
currentbox^.DeleteSelected;
end;
wieso wirft mir das ne AV??
Ist doch klar: TListBox ist eine Klasse, also abgeleitet von TObject und damit von Borland soweit vereinfacht, dass Sender schon selbst ein Zeiger auf die Listbox ist. CurrentBox := @Sender setzt dann CurrentBox auf die Adresse des Zeigers, der auf die Listbox zeigt. Damit ist CurrentBox^.DeleteSelected Schwachsinn, denn eigentlich müsste es heissen (CurrentBox^)^.DeleteSelected.

Wie gesagt: Borland hat das alles vereinfacht (schon vor Jahren) und seitdem geht's so:

Delphi-Quellcode:
//globale vars
var currentbox: TListBox;

procedure TForm1.LBbeforeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  currentbox := sender;
end;

procedure TForm1.deleteClick(Sender: TObject);
begin
  currentbox.DeleteSelected;
end;
  Mit Zitat antworten Zitat