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;