Schon wieder diese Pointer...
Aaaaalso
Ich habe die Einträge in meiner Liste jetzt so arrangiert:
Delphi-Quellcode:
TBauteil = Record
ID: string; // Der einzigartige name jedes Bauteils
Typ: TBauteilTyp; // Der Typ des Bauteils (im moment noch unwichtig)
Ebene: integer; // Die Ebene des Bauteils, also Root Ebene = 0 Nachfolger Ebene = 1 usw
Parent,Next: Array of PBauteil // Die direkten nachfolgenden und vorherigen Elemente
end;
Da ich mit meiner Liste einen Stromkreis darstellen möchte, habe ich mir Überlegt, dass sich Parallel und Reihenschaltungen ja auch verschachteln können z.B:
Code:
[root] ---> [root_child1] ---> [root_child1_child1] ---> [root_child1_child1_child1]
\--> [root_child1_child2] --/
In diesem Fall wird aber durchs rekursive Auflisten (logischerweise, ergeht ja alle einträge durch, folgendes Angezeigt
Zitat von
Listbox:
root_child1_child1_child1
root_child1_child1
root_child1_child1_child1
root_child1_child2
root_child1
root
Ist ja auch klar, denn durch die Rekursive Suche wird root_child1_child1_child1 zweimal gefunden
Wie kann ich das umgehen?
Die Zweite Sache ist, wenn ich den Speicherplatz beim beenden rekursiv freigebe, dann kommts auch zu einem Problem, denn:
Code:
[s][root] ---> [root_child1] ---> [root_child1_child1] ---> [root_child1_child1_child1][/s]
[s] \--> [root_child1_child2] --/[/s]
[s][root] ---> [root_child1] ---> [root_child1_child1] ---> nil[/s]
[s] \--> [root_child1_child2] [color=#ff0000][b]--/[/b][/color] // der Zeigt dahin, wo nichts ist und es kracht, wenn er versucht auf dieses Element zuzugreifen, er weiß ja nicht, das es das Element nicht mehr gibt [/s]
Wie kann ich das verhindern?
Und nochwas? Wäre es sinnvoller, statt Parent: Array of string; lieber Parent: Array of PBauteil; zu nehmen? EDIT:
hat sich erldedigt, nur noch das Erste
Vielen Dank schonmal für die Hilfe!
Richard