hi,
Und genau da liegt jetzt mein Problem. Dem VST muss ja ganz am Anfang mal die Grösse zugewiesen werden:
VST_Teile.NodeDataSize := SizeOf(TTeil);
So, und wenn nun mein TTeil plötzlich dynamisch wird, wird wohl diese Initialisierung scheitern.
echt? Rate mal was folgendes für ne Ausgabe produziert:
Delphi-Quellcode:
Memo1.Lines.Add(IntToStr(SizeOf(TForm)));
Memo1.Lines.Add(IntToStr(SizeOf(TMemo)));
Memo1.Lines.Add(IntToStr(SizeOf(TStrings)));
Und dann die Erklärung: Du ermittelst mit SizeOf NICHT die Größe einer Instanz sondern die Größe des Pointers (!) der auf die Instanz zeigt! Von daher spielt es keine Rolle wie viele Eigenschaften/Methoden/Arrays deine Klasse hat - der Pointer hat immer 4 Bytes.... (keine Regel ohne Außnahme: Win64 Code
)
Und meine Vorredner haben natürlich Recht - Visualisierung und Datenhaltung sollten getrennt voneinander sein, d.h. Die Teile speicherst Du in einer ObjectList, die Du in einer Lade-Methode füllst und anschließend verwendest Du die Objectlist um die Instanzen in den Tree zu hängen.
Grüße