11 Stimme

Delphi/Lazarus: MemoryStream in FileStream laden und speichern

Info von Delphianer | 29.07.2013 um 14:23

In diesem kleinen Beispiel möchte ich euch zeigen, wie ihr einen MemoryStream in einen FileStream laden und danach speichern könnt.

Der Code sowohl für Delphi als auch Lazarus sieht so aus:

var
  fs: TFileStream;
begin

  // ms ist ein gegebener TMemoryStream 

  fs := TFileStream.Create('C:\test.txt', fmCreate);

  try

     if ms.Size>0 then begin
       ms.Position:=0;
       fs.CopyFrom(ms, ms.Size);
     end;

  finally
     fs.free;
  end;   

end;

Im Beispiel ist "ms" unser MemoryStream, den wir speichern möchten. Mit fs.CopyFrom(ms, ms.Size) kopieren wir den MemoryStream in seiner vollen Länge in den FileStream "fs". Wichtig ist es hier, vorher sicherzustellen, dass die Position von "ms" auf 0 steht bzw wir diese Position auf 0 setzen. Ansonsten kann der Stream nicht von vorne gelesen werden.

Lazarus und Umlaute/Unicode Zeichen in Dateinamen

Wenn man das Beispiel mit Lazarus nutzt und im Dateinamen der Datei (hier "C:\test.txt") Umlaute oder andere Unicode-Zeichen erwartet, sollte man im Beispiel TFileStream einfach durch TFileStreamUTF8 an den beiden Stellen (Deklaration und Create) ersetzen. Sonst kann es hier zu einem Fehler kommen.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.