我有一个保存在字符串中的jpeg文件。我想在Delphi7中将字符串加载/分配给TImage。我对以下代码使用KOL:
var
ImageStream : PStream;
ImageString : String;
MyJpeg : TJpeg;
begin
ImageStream:= NewMemoryStream; // Create New Stream.
ImageStream.Write(ImageString [1], Length(ImageString )); // Fill the stream.
ImageStream.Position := 0; // Set Position to 0.
// ImageStream.SaveToFile('C:\test.jpg', 0, ImageStream.Size); // Debug --> WORKS!
MyJpeg := TJpegImage.Create; // Create a Jpeg Image.
MyJpeg.LoadFromStream(@ImageStream); // ???
Image1.picture.Assign(MyJpeg); // No picture is shown
end;
它应该起作用,因为PStream只是指向TStream的指针。
但是Timage中没有显示图片...
谢谢你的帮助 :)
最佳答案
您声明
PStream只是指向TStream的指针
在这种情况下,此代码
MyJpeg.LoadFromStream(@ImageStream);
无法工作。您正在将指向TStream的指针传递给
TStream
类型的参数。为了使代码编译,您需要将TStream
传递给LoadFromStream
。像这样:MyJpeg.LoadFromStream(ImageStream^);
在您的位置,我可能会这样使用
TStringStream
。var
Stream: TStringStream;
....
Stream := TStringStream.Create(ImageString);
try
MyJpeg := TJpegImage.Create;
try
MyJpeg.LoadFromStream(Stream);
Image1.Picture.Assign(MyJpeg);
finally
MyJpeg.Free;
end;
finally
Stream.Free;
end;
也许有一种KOL方式可以做到这一点,我一点也不了解KOL。
关于delphi - KOL-将PStream加载到TImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10667340/