Thema: Delphi String in TFileStream

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.119 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: String in TFileStream

  Alt 28. Jan 2006, 16:42
Moin Metatron,

hier mal ein kleines Beispiel (getestet):

Delphi-Quellcode:
var
  fs : TFileStream;
  ms : TMemoryStream;
  sValue : string;
  dwLen : DWORD;

begin
  // Speichern
  fs := TFileStream.Create('c:\temp\testdatei.txt',fmCreate);
  ms := TMemoryStream.Create;
  try
    sValue := 'Diesen String an den Anfang';
    // Einen String in die Datei schreiben, inclusive Länge, damit
    // man ihn anschliessend wieder auslesen kann
    dwLen := length(sValue);
    fs.Write(dwLen,4);
    fs.Write(sValue[1],dwLen);
    // Und den Inhalt des MemoryStreams hinterher
    // Irgendetwas sollte dann aber schon drinstehen ;-)
    fs.CopyFrom(ms,0)
  finally
    FreeAndNil(fs);
    FreeAndNil(ms);
  end;

  // Löschen, um zu zeigen, dass es funktioniert ;-)
  dwLen := 0;
  sValue := '';

  // Auslesen
  fs := TFileStream.Create('c:\temp\testdatei.txt',fmOpenRead);
  ms := TMemoryStream.Create;
  try
    // Stringlänge auslesen
    fs.Read(dwLen,4);
    SetLength(sValue,dwLen);
    fs.Read(sValue[1],dwLen);
    // Diesmal muss die Länge mit angegeben werden, damit die Position im
    // FileStream nicht wieder auf 0 gesetzt, sondern hinter dem String
    // ausgelesen wird.
    ms.CopyFrom(fs,fs.Size-fs.Position);
  finally
    FreeAndNil(fs);
    FreeAndNil(ms);
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat