Ne nix Speichersalat. Klappt wunderbar. Mache ich auch immer so (seit Jahren) und es hat noch nie Probleme gegeben. Ich speichere mir meine Objekte allerdings immer noch in einer ObjectList<T> und gebe dem NodeObject dann nur noch eine Referenz zur Object-Instanz.
Naja, ich mache sowas ähnliches:
Delphi-Quellcode:
type
TNodeData = record
ObjRef: Pointer;
end;
Und dann da die Klasseninstanzen angehangen.
Aber so wie hier gemacht, stelle ich mir das seltsam vor. GetNodeData erzeugt erst eine neue Variableninstanz vom Typ Pointer mit der Größe von [was eigentlich? -> OnGetNodeDataSize], dann lässt man den Speichermanager durch TDataSet.Create eine neue Klasseninstanz auf der selben Adresse erzeugen und dann überlässt man das der internen Speicherverwaltung vom VST?
Hmm, ok, ich arbeite immer noch mit der letzten Lischke-Version vom VST. Vielleicht sind neuere dahingehend flexibler. Wie gesagt, ich habe das nie so gemacht.
NACHTRAG:
Um wieder auf das eigentliche Problem zurück zu kommen: GetMaxColumnWidth arbeitet ja intern mit Canvas.TextWidth. Wenn man da jetzt dummerweise nicht den String sondern eine getypcastete Referenz auf den String rein wirft, erhält man recht gern den Effekt, dass TextWidth immer identische Werte ausspuckt. Würde also theoretisch das Problem erklären.