Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#19

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 13:59
Mit TFilestream die Datei wieder öffnen. Dann kannst du die Länge wieder auslesen. Nachdem du die Länge hast, schreibst du alles, was sich danach befindet in dein Memo. Allerdings nur so oft, wie in der Länge angegeben. Selbiges machst du mit dem JPEG.

Delphi-Quellcode:
procedure Laden();
var
  lStream: TStream;
  lStartPos: Int64;
  lDataSize: Cardinal;
  TextStream, JPEGStream: TMemoryStream;
begin
  lStream := TFileStream.Create(YourFileName, fmOpenRead);
  try
    // Länge lesen
    lStream.Read(lDataSize, sizeOf(lDataSize));

    TextStream := TMemoryStream.Create;
    TextStream.Size = lDataSize;
    // Text auslesen
    lStream.Read(TextStream.Memory, lDataSize);
    YourMemo.Lines.LoadFromStream(TextStream);
    TextStream.Free;

    // Bild laden
    lStream.Position := sizeof(lDataSize) + lDataSize; // Diese Zeile sollte weggelassen werden können, da der Stream ja schon die richtige Position hat.

    // Länge lesen
    lStream.Read(lDataSize, sizeOf(lDataSize));

    JPEGStream := TMemoryStream.Create;
    JPEGStream.Size = lDataSize;
    // Text auslesen
    lStream.Read(JPEGStream.Memory, lDataSize);
    YourJPEG.LoadFromStream(JPEGStream);
    JPEGStream.Free;
  finally
    lStream.Free;
  end;
end;
ungetestet, sollte aber funktionieren.

Bernhard

ADD: Was der Code von SirThornberry macht ist eigentlich nicht schwer: Er erstellt einen Stream (Filestream zum Lesen/Schreiben von Dateien). In diesen Stream wird eine 0 (Datentyp: Cardinal) geschrieben. Dann kommt der Text rein. Streamlänge - Länge von Cardinal = Textlänge. Diese Textlänge wird jetzt ganz vorne hingeschrieben. Danach macht er hintendran weiter: 0 (Cardinal) reinschreiben, dann das Bild hintendran. Jetzt noch die Länge des Bildes berechnen und die 0 vor dem Bild ersetzen, fertig.
Bernhard
Iliacos intra muros peccatur et extra!

Geändert von rollstuhlfahrer (26. Sep 2010 um 14:02 Uhr)
  Mit Zitat antworten Zitat