Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#1

TStream als Teil an einen anderen TStream übergeben

  Alt 25. Jan 2011, 17:22
Hallo,

ich glaube ich steht auf dem Schlauch und hoffe, ihr könnt mir helfen.
Folgende Problemstellung: Ich möchte eien Grafik einlesen und deren Inhalt mit zusätzlichen Informationen versehen und in einer Binärdatei speichern.

Folgender Ansatz:
Delphi-Quellcode:
var
  FileStream : TFileStream;
  PicStream, MyStream: TStream;
  Len : integer;
begin
  // :
  // Größe des Streams
  Len := PicStream.Size;
  MyStream.Write(Len, SizeOf(Len));
  MyStream.Write(PicStream, Len);
  // :
  // und dann als Datei speichern
  FileStream := TFileStream.Create('D:\Temp\test.dat', fmCreate);
  MyStream.Position := 0;
  try
    FileStream.CopyFrom(MyStream, MyStream.Size);
  finally
    FileStream.Free;
  end;
end;
Beim Auslesen gehe ich so vor:

Delphi-Quellcode:
 
var
  FileStream : TFileStream;
  PicStream : TMemoryStream;

  sizeInt : integer;
  TempBuff : String;
begin
  // :
  sizeInt := 0;
  FileStream.Read(sizeInt, SizeOf(integer));
  If sizeInt > 0 then
  begin
    SetLength(TempBuff, sizeInt);
    FileStream.Read(PChar(TempBuff)^, sizeInt);

    PicStream.Clear;
    PicStream.Write(PChar(TempBuff)^, Length(TempBuff));
    PicStream.Position := 0;
  end;
  // :
end;
Aber irgendwie stimmen die Daten des Streams nicht. An was kann es hängen? Ist schon das Speichern falsch?

Es wäre schön, wenn mich jemand auf die richtige Fährte führen würde

Besten Dank.
  Mit Zitat antworten Zitat