我有一个保存在字符串中的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/

10-08 22:41