Argh, ich hab einen Denkfehler in einer Methode (entweder TNodeTest.LoescheUndFuegeEin oder/und TNodeTest.EinzelnerKnotenLoeschen).
Ich habe nun beide Methoden nochmal neu geschrieben (Algo aufgestellt und umgesetzt) und es geht immer noch nicht richtig.
Was nicht geht:
Es sieht so aus, dass manchmal nicht nur ein Knoten sondern alle gelöscht weden bzw manche einfach abgehangen werden. Also z.b. PStandNode.FLinks := nil; gemacht wird. Denn der Destruktor wird nicht immer angeschmissen, aber ich kann dann nicht mehr zu allen nodes navigieren und sichtbar sind sie auch nicht mehr (im TreeView).
Sry, ich weiß, dass ich nicht gut erklären kann. Deshalb hänge ich mein Projekt wieder an. Gebt ein paar zufällige Zahlen ein, löscht ein paar Mal einzelne Knoten, die ein oder zwei Kinder haben und mit etwas Glück seht ihr, was ich meine.
Vielen Dank
LG ford42
EDIT: Hab bisher 2 Fehler gefunden:
1.:
Code:
if Assigned(PWurzelBufferNode.FLinks) and Assigned(PWurzelBufferNode.FRechts) then
anstatt
Code:
if Assigned(PWurzelBufferNode.FLinks) and Assigned(PWurzelNode.FRechts) then
2.:
Code:
until (BufferStack.Count = 0) and ((PBufferNode.FRechts = nil) and (PBufferNode.FLinks = nil));
anstatt
Code:
until (BufferStack.Count = 0) or ((PBufferNode.FRechts = nil) or (PBufferNode.FLinks = nil));