从TResourceStream读取

时间:2013-02-09 16:11:53

标签: delphi

我正在尝试从资源文件中读取一些gif和bitmaps,我正在使用资源黑客将图像包含到project.res文件中,但我使用的代码似乎没有返回正确的图像数。

以下是我要做的事情

Stream := TResourceStream.Create(HInstance,'EMOTES','BIN');
GetMem(Buffer,40000);
Stream.Read(StreamCount,4);
For I := 0 To StreamCount - 1 Do Begin
  Stream.Read(StreamSize,4);
  Stream.Read(Buffer^,StreamSize);
  ImageStream := TMemoryStream.Create;
  ImageStream.Write(Buffer^,StreamSize);
  ImageStreamList.Add(ImageStream);
  ImageStream.Free;
End;
FreeMem(Buffer);
Stream.Free;

1 个答案:

答案 0 :(得分:3)

您似乎正在尝试从资源加载GIF文件。这样做:

Stream := TResourceStream.Create(HInstance, 'EMOTES', 'BIN');
try
  image.LoadFromStream(Stream);
finally
  Stream.Free;
end;

其中imageTGIFImage类型的实例化对象。

我真的无法弄清楚你的代码想要做什么。也许你有多个图像。在这种情况下,为每个图像创建一个资源,每个资源具有不同的名称。请注意,我并不是指每个图像有一个.res文件。您可以将所有图像放入单个.rc文件中,每个资源具有不同的名称。然后将.rc文件编译为.res文件并链接到您的应用程序。