Einzelnen Beitrag anzeigen

Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#1

Inhalt einer TStringList in Stream schreiben

  Alt 7. Jun 2004, 12:46
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!
Manuel
  Mit Zitat antworten Zitat