Einzelnen Beitrag anzeigen

Hyperspacer

Registriert seit: 23. Apr 2006
53 Beiträge
 
Delphi 7 Personal
 
#5

Re: jpeg in FileStream speichern

  Alt 9. Apr 2009, 14:25
Es passiert immer noch nichts Das jpeg wird nicht in den Stream geschrieben.

hier noch einmal der komplette code, falls irgendwo anders ein doofer fehler ist, der das verursacht.
ich schreibe am anfang einen hashwert eines passworts in die datei. dieser wert wird geschrieben.
Dann möchte ich aus einer liste (mmFiles = Memo) dateien laden und in den stream schreiben. Ich hab im debug überprüft, ob er auch brav alle schritte ausführt. und das tut er. aber trotzdem wird nichts in die datei geschrieben..
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtDlgs, ExtCtrls, JPEG, MD5;

procedure TForm2.Button1Click(Sender: TObject);
var
  Datei : TFileStream;

  passwort : String;
  Context : TMD5_CTX;
  Hash : TMD5Digest; // 16 Bytes in einem Array 0-15

  i : Integer;
  jpeg : TJpegImage;
  bild : TPicture;
begin
  // Datei erstellen
  Datei := TFileStream.Create(Savedialog1.FileName,fmCreate);

  // Passwort Hash ermitteln
  passwort := edPasswort.Text;
  MD5Init(Context);
  MD5Update(Context, pChar(passwort), Length(passwort));
  MD5Final(Context, Hash);

  // Passwort schreiben
  Datei.Write(Hash[0],16);

  // Bilder schreiben
  For i := 0 to mmFiles.Lines.Count -1 do
    begin
      if not fileexists(mmFiles.Lines[i])
        then continue;

      // Bild laden
      jpeg := TJpegImage.Create;
      jpeg.CompressionQuality := 90;

      Bild := TPicture.Create;
      Bild.LoadFromFile(mmFiles.Lines[i]);

      jpeg.Assign(Bild.Graphic);
      Bild.Free;

      jpeg.Compress; // Kompriemieren
      
      // in Stream schreiben
      jpeg.SaveToStream(datei);

      jpeg.Free;
    end;

  Datei.Free;
end;
  Mit Zitat antworten Zitat