Hallo,
erstens würde ich hier auch fmCreate nehmen, weil die Datei allerwahrscheinlichkeit nach
nicht existiert.
Ich würde auch zweitens folgenden Code empfehlen:
Delphi-Quellcode:
var
Datei : TFileStream;
jpeg : TJpegImage;
Bild: TPicture;
begin
Datei := TFileStream.Create(Savedialog1.FileName,fmCreate);
// JPEG erzeugen
jpeg := TJpegImage.Create;
jpeg.CompressionQuality := 90;
Bild := TPicture.Create;
Bild.LoadFromFile(mmFiles.Lines[i]);
jpeg.Assign(Bild.Graphic);
jpeg.Compress;
Bild.Free;
// in Stream schreiben
jpeg.SaveToStream(datei);
jpeg.Free;
datei.free;
Der Vorteil bei dieser geänderten Version liegt darin, dass TPicture alle verfügbaren Dateiformate lesen kann (auch JPEG, etc.), sobald die
Unit für den Graphic-Typ in die Uses-Liste eingetragen wird. (Es geht z.B. auch PNG).
Des weiteren hast du für ein Speicherleck gearbeitet, da du deinen File-Stream nie aus dem Speicher gekehrt hast. Heißt auch, dass die Datei noch offen war.
Falls dich noch ein wenig die Dateisicherheit interessiert, guck doch mal nach folgendem:
Code:
fmShareExclusive Kein Lese- und Schreibzugriff.
fmShareDenyWrite Kein Schreibzugriff.
fmShareDenyRead Kein Lesezugriff. Verwenden Sie diesen Modus nicht in plattformübergreifenden Anwendungen.
fmShareDenyNone Andere haben uneingeschränkten Zugriff.
Bernhard