Leider habe ich noch eine Frage da ich etwas noch nicht verstehe - geht um das Speichern der Daten. Ich habe noch nie mit Streams gearbeitet, deswegen stehe ich da ein bisschen auf dem Schlauch.
Zum Speichern wird folgende procedure genutzt:
Delphi-Quellcode:
procedure TForm1.vstSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := vst.GetNodeData(Node);
Len := Length(Data.TestStr);
Stream.write(Len, SizeOf(Len));
Stream.write(PChar(Data.TestStr)^, Len);
end;
Da sind die Daten aber nur ein String, wie geht das denn wenn es mehrere Strings sind ? So etwa ? Das kommt mir kompliziert vor:
Delphi-Quellcode:
procedure TSerienDB.VSTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream);
var
Data: PTreeData;
Len: integer;
begin
Data := VST.GetNodeData(Node);
Len := Length(Data.FCaption);
Stream.write(Len, SizeOf(Len));
Stream.write(PChar(Data.FCaption)^, Len);
Len := Length(Data.FColumn1);
Stream.write(Len, SizeOf(Len));
Stream.write(PChar(Data.FColumn1)^, Len);
Len := Length(Data.FColumn2);
Stream.write(Len, SizeOf(Len));
Stream.write(PChar(Data.FColumn2)^, Len);
Len := Length(Data.FColumn3);
Stream.write(Len, SizeOf(Len));
Stream.write(PChar(Data.FColumn3)^, Len);
end;
Wie ist das denn richtig ?
Gruss
Hans