Ich verstehe das nicht. Es geht nicht.
Ich habe dein Code jetzt mal direkt in die Load Methode gepack.
Delphi-Quellcode:
procedure TAdmin.loadPicture;
var Data: TData;
ms: TMemoryStream;
len:Int64;
begin
if form1.OpenPictureDialog1.execute
then begin
Data := self.data(form1.MCalendar.Date);
Data.FPicture.Free;
Data.FPicture := TJpegImage.Create;
Data.FPicture.CompressionQuality := 20;
Data.FPicture.LoadFromFile(form1.OpenPictureDialog1.FileName);
//zum testen
ms := TMemoryStream.Create;
try
try
Data.FPicture.SaveToStream(ms);
len := ms.Size;
//stream.Write(len, sizeOf(len));
ms.Position := 0;
ms.SaveToFile('
test.jpg');
//stream.Write(ms,len); // schreibe den MemoryStream in den FileStream
except
on e:
exception do showmessage(e.
Message);
// es wird keine Exception geworfen...
end;
// aber auch keine Datei erstellt.
finally
FreeAndNil(ms);
end;
form1.IPicture.Picture.Bitmap.Assign(Data.FPicture);
// und hier wird das Bild richtig ins Image kopiert...
// warum geht dann der Stream nicht?
end;
end;
was auch sehr komisch ist, dass in len ein anderer Wert als in ms.size steht ....(nach len := ms.size