Hey,
ich sitze gerade an Binärbäume dran und bekomme es nicht hin, eine Adresse eines Pointers auf nil zu setzen/freizugeben.
Folgende 2 Code-Ausschnitte dürften es klarer machen, was ich meine:
Code:
PNode = ^TNode;
TNode = record
daten: String;
links: PNode;
rechts: PNode;
end;
Code:
procedure TForm4.Bt_LoeschenClick(Sender: TObject);
begin
Dispose(PStandNode); //Pointer/record wird auf nil gesetzt, jedoch bleibt die Adresse vom Pointer vorhanden
PStandNode := PWurzelNode; //LÖSCHEN NOCH RICHTIG IMPLEMENTIEREN
Lb_Ausgabe.Caption := PStandNode.daten;
StatusBt;
end;
Wenn ich Dispose verwende, wird zwar der Pointer freigegeben(?), aber die Adresse (z.B. $2692B40) bleibt vorhanden.
Wenn ich jetzt in dem Baum navigiere, zeigt (z.B.) rechts weiterhin auf $2692B40, jedoch bekomme ich natürlich eine
access-violation-
Exception.
Wie würdet ihr dies lösen, oder gibts dazu vlt sogar ne Methode, die mir da helfen könnte?
Vielen Dank
Gruß ford42