Hi,
ich muss sagen das ist das erste mal das ich großartig mit Zeigern in Delphi arbeite, darum auch hier gleich eine Frage, zu der ich nach langem suchen auch keine antwort habe.
Ich habe die Folgende Pointerstruktur:
Delphi-Quellcode:
PCommands = ^TCommands;
TCommands = record
KeyInput : Boolean;
Input : TInputType;
Parameter : String;
Next : PCommands;
end;
PMakro = ^TMakro;
TMakro = record
TimeStamp : Integer;
Commands : PCommands;
Next : PMakro;
end;
und habe auf einen Button eine ganz kleine Teststruktur angelegt:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
Anchor : PMakro;
begin
new (Anchor);
Anchor^.TimeStamp := 10;
new (Anchor^.Commands);
Anchor^.Commands^.KeyInput := True;
FreeMakro (Anchor);
end;
und wollte testen, ob meine Freigabefunktionen funktionieren, sie arbeiten rekursiv und sollen eigentlich die listen von hinten nach vorne zerstören:
Delphi-Quellcode:
procedure TForm1.FreeMakro (Anchor : PMakro);
begin
if Assigned (Anchor)
then
begin
if Assigned (Anchor.Commands)
then FreeCommands (Anchor.Commands);
if Assigned (Anchor.Next)
then FreeMakro (Anchor.Next);
dispose (Anchor);
end;
end;
procedure TForm1.FreeCommands (Anchor : PCommands);
begin
if Assigned (Anchor)
then
begin
if Assigned (Anchor.Next)
then FreeCommands (Anchor^.Next);
// <---- HIER WIRD EINE AV AUSGELÖST
dispose (Anchor);
end;
end;
ich hab markiert wo ich eine
AV bekomme, kann mir einer sagen was ich falsch gemacht habe?
Danke schonmal
MfG Hybrid666