开发者

How can I extract a resource into a file at runtime?

I want to distribute only a single 开发者_如何学运维.exe, however, at runtime I would like it to extract some embedded image resources to the users hard disk drive.

Can I, and if so, how?


Use Delphi's TResourceStream. It's constructor will find and load the resource into memory, and it's SaveToFile method will do the disk write.

Something similar to this should work:

var
  ResStream: TResourceStream;
begin
  ResStream := TResourceStream.Create(HInstance, 'YOURRESOURCENAME', RT_RCDATA);
  try
    ResStream.Position := 0;
    ResStream.SaveToFile('C:\YourDir\YourFileName.jpg');
  finally
    ResStream.Free;
  end;
end;

If you can use the resource ID instead of name, it's a little less memory. In that case, you'd resplace Create with CreateFromID, and supply the numeric ID rather than the string name.


Create a TResourceStream. You'll need the module instance handle (usually SysInit.HInstance for the current EXE file, or else whatever you get from LoadLibrary or LoadPackage), the resource type (such as rt_Bitmap or rt_RCData), and either the resource name or numeric ID. Then call the stream's SaveToFile method.


try
   if not Assigned(Bitmap)
   then
      Bitmap := TBitmap.Create();
   Bitmap.LoadFromResourceName(HInstance,SRC);
except
   on E:Exception do
      ShowMessage(e.Message);
end;

And then save the Bitmap to disk.


Maybe this might come in handy too if you need to work with the resources itself. Delphidabbler / ResourceFiles

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜