Hallo
DP'ler!
Ich verzweifle zur Zeit daran den Inhalt
einer TStringList in einen Stream zu schreiben
Zur Zeit verwende ich folgenden Code:
Delphi-Quellcode:
var Header: TSaveHeader;
Data: TSaveData;
i: Byte;
fs: TMemoryStream;
...
for i:=1 to 8 do
begin
Data.Spieler[i].Strassen := TStringList.Create;
Data.Spieler[i] := Spieler[i];
Header.Capacity[i] := Data.Spieler[i].Strassen.Capacity;
end;
...
fs := NIL;
try
fs := TMemoryStream.Create;
fs.Write(Header,sizeof(Header));
fs.Write(Data,sizeof(Data));
fs.SaveToFile(dateiname);
finally
fs.Free;
end;
Dabei sehen die Typen so aus:
Delphi-Quellcode:
TSaveData = record
Spieler: array [1..8] of TSpieler;
Strassen: array [1..40] of TStrasse;
aktuellerSpieler: Byte;
SpielerAnzahl: Byte;
sbFertig: Boolean;
sbWuerfeln: Boolean;
end;
TSaveHeader = record
Version: string[10];
Name: string[255];
Kommentar: string[255];
Capacity: array [1..8] of integer;
end;
TSpieler = record
Name: string[50];
Position: byte;
Geld: integer;
Strassen: TStringList;
Spielfigur: byte;
Farbe: TColor;
end;
Ich dachte mir schon dass ich den Capacity-Wert der StringList mit speichern
muss, damit dann beim lesen wieder die richtige Länge rauskommt, aber der sizeof()-Wert
einer TSTringList ergibt bei mir immer 4
Dann hab ich probiert den Inhalt über TStringList.CommaText zu speichern,
aber irgendwie bekomm ichs auch nicht hin den resultierenden String im Stream abzulegen
Hoffe jemand weiss Rat.
Schonmal Danke im Vorraus!