Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Binärer Baum mit Klasse (https://www.delphipraxis.net/187549-binaerer-baum-mit-klasse.html)

ford42 16. Dez 2015 07:23

AW: Binärer Baum mit Klasse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Den Bug kann ich aber trotzdem nicht fixen, weil ich nicht rausbekomme wie er entsteht.

Wenn ich wild auf der Tastatur irgendwelche Werte eingebe, rechts links, verschiedene Lösch-Funktionen ausführe und dann wieder wohin navigiere kommt z. B. der Fehler, den ich unten angehängt habe.

Aber wie bekomm ich jetzt raus wodurch er entsteht? :o



Vielen Dank
LG ford42

EDIT: Nun auch gescheit formatiert (aber die Klammern find ich so eig schöner, deshalb hab ich sie so gelassen)
Und eig müsste es jetzt alles bugfrei laufen! :)

ford42 17. Dez 2015 12:53

AW: Binärer Baum mit Klasse
 
Liste der Anhänge anzeigen (Anzahl: 1)
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));


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz