Forum: Programmieren allgemein
by Zacherl,
19. Jun 2017
Puh :-D Achtung: Wall of Text inc: Generell hast du sicherlich recht. Dann aber auch ganz oder gar nicht (sprich über RootNodeCount und OnInitNode). Manuelles Hinzufügen/Löschen von Nodes (wie es der Threadersteller momentan betreibt) ist nichts anderes als die Modellierung einer Datenstruktur auf Basis des visuellen Controls. Von daher finde ich die Verwendung von Records hier in keinster Weise...
Forum: Programmieren allgemein
by Zacherl,
19. Jun 2017
Jap, wenn du solche Funktionalität benötigst, dann bleibe ruhig bei der TObjectList. Bei einigen 100 Nodes sehe ich da auch keine Probleme. Meine Bedenken hatte ich geäußert, da der VST oftmals mit mehreren 10.000 Nodes verwendet wird. Du wirst allerdings nicht umherkommen dir in deinem Datenobjekt noch einen Zeiger zu speichern, der auf die dazugehörige PVirtualTreeNode zeigt, damit du nach...
Forum: Programmieren allgemein
by Zacherl,
19. Jun 2017
Du sparst dir halt das manuelle Create/Free. Im Grunde eher Geschmackssache.
Die eigentliche Frage ist: benötigst du bidirektionalen Zugriff auf die Daten? Also musst du an irgendeiner Stelle mal die Daten im Datenobjekt modifizieren, ohne die dazugehörige Node zu kennen. In diesem Falle würde die ObjektList bzw. Sinn machen. Trifft das nicht zu, würde ich mir die Liste komplett sparen. Ob du...
Forum: Programmieren allgemein
by Zacherl,
19. Jun 2017
Ne, also mit dem Codeausschnitt wollte ich dir aufzeigen, dass du die Objekte sehr wohl freigibst :-D Du hast halt zwei Zeiger auf das selbe Objekt. Einmal holst du dir den Zeiger über GetNodeData und einmal residiert der Zeiger in der TObjectList. Dein Free bezieht sich ja aber trotzdem auf das konkrete Objekt.
Data := Node.GetData<TVSTData>;
...
Data.Free;
macht das Gleiche wie
...
Forum: Programmieren allgemein
by Zacherl,
19. Jun 2017
Zumindest früher hat der VST das definitiv nicht von alleine gemacht.
IndexOf ist nebenbei bemerkt keine sehr schnelle Operation und kann bei extrem vielen Nodes deine Performance schon ziemlich verschlechtern. Hat es irgendeinen Grund, warum du die Objekte überhaupt in einer TObjectList ablegst? Ich persönlich gehe immer so vor, dass ich beim Einfügen einer Node mein Datenobjekt/Datenrecord...