Zitat von
Jens Hartmann:
Delphi-Quellcode:
var
Daten : TOMB256PLUS;
begin
Daten := TOMB256PLUS.Create;
Objekt erzeugen
Zitat von
Jens Hartmann:
Daten := TOMB256PLUS(VST.GetNodeData(Node)^);
nun den Zeiger wieder überschreiben und die Referenz verlieren.
Somit ist die gerade zuvor erzeugte Instanz von die nicht mehr zu benutzen.
Kurz: Die .Create Zeile ist zuviel und das im ganzen Code.
Es reicht ein mal das Objekt pro Datensatz zu erstellen.
Das machst du ja bereits bei der Init Routine.
Delphi-Quellcode:
procedure TForm1.VSTInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
Daten : TOMB256PLUS;
[...]
Daten := TOMB256PLUS.Create;
VST.NodeHeight[Node] := 35;
Include(InitialStates, ivsMultiline);
Initialize(Daten);
Was macht deine "Initialize" Daten Funktion?
Wann weist du den Objektzeiger dem VST-Data Zeiger zu?
Jede Zeile hat ein pVirtualNode Record, an diesem hängt der Datenzeiger. Diesen scheinst du nicht zu setzen. Daher die Schutzverletzung.
Daher geht dein GetText usw. nicht, weil es keine Referenz auf deine TOMB256PLUS Objekte findet.