@generic: Von OnLoad und OnSave steht da aber nichts drin
Ich probiere nun, die Daten des Objekts einzeln in den Stream zu schreiben (erstmal nur der erste Parameter) mit
Delphi-Quellcode:
// save nodes to disk
procedure TForm1.VST1SaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := VST1.GetNodeData(Node);
Len := Length(TSessionObject(Data.FObject).name);
Stream.Write(Len, SizeOf(Len));
Stream.write(PChar(TSessionObject(Data.FObject).name)^, Len);
end;
Funktioniert soweit. Nur wie bekomme ich die Daten da wieder raus?
Delphi-Quellcode:
// load nodes from disk
procedure TForm1.VST1LoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := VST1.GetNodeData(Node);
Stream.read(Len, SizeOf(Len));
SetLength(TSessionObject(Data.FObject).name, Len); //<---- Error: Ein Konstantenobjekt kann nicht als Var-Parameter übergeben werden
Stream.read(PChar(TSessionObject(Data.FObject).name)^, Len);
end;
Das klappt irgendwie nicht, wegen der markierten Zeile. Wieso?