MemoryStream を直接 Picture に割り当てることができないのはなぜですか? 以下に、MemoryStream を TImage に割り当てる 2 つの方法を掲載します。Method1 は機能せず、Method2 は機能します。なんで?ありがとうサム
Method1 : このメソッドは JPEG エラー #42 を返します
Var
ms1 : TMemoryStream;
J : TJPEGImage;
St : String;
begin
ms1 := TMemoryStream.Create;
try
try
St := 'somepath';
IdFTP1.Get(St, ms1);
if ms1.Size > 0 then
Begin
J := TJPEGImage.Create;
try
J.LoadFromStream(ms1);
Image4.Picture := nil;
Image4.Picture.Assign(J); // here, I got an error #42 JPEG
finally
J.Free;
end;
End;
except
on e:exception do ShowMessage(e.message);
end;
finally
ms1.Free;
End;
End;
end;
Method2 : このメソッドは動作します
Var
ms1, ms2 : TMemoryStream;
J : TJPEGImage;
St : String;
begin
ms1 := TMemoryStream.Create;
ms2 := TMemoryStream.Create;
try
try
IdFTP1.Get(somepath, ms1);
if ms1.Size > 0 then
Begin
J := TJPEGImage.Create;
try
J.LoadFromStream(ms1);
ms1.SaveToFile('lixofoto.jpg');
ms2.LoadFromFile('lixofoto.jpg');
J.LoadFromStream(ms2);
ImgProd.Picture.Assign(J);
DeleteFile('lixofoto.jpg');
finally
J.Free;
end;
End;
except
end;
finally
ms1.Free;
ms2.Free;
End;