如何在运行时将资源提取到文件中?

Maw*_*awg 12 delphi extraction embedded-resource

我想只分发一个.exe,但是,在运行时我希望它将一些嵌入的图像资源提取到用户硬盘驱动器.

我可以,如果是的话,怎么样?

Ken*_*ite 19

使用Delphi的TResourceStream.它的构造函数会查找并将资源加载到内存中,而它的SaveToFile方法将执行磁盘写入.

类似的东西应该工作:

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;
Run Code Online (Sandbox Code Playgroud)

如果您可以使用资源ID而不是名称,那么内存就会少一些.在这种情况下,您将使用CreateFromID替换Create,并提供数字ID而不是字符串名称.

  • 无论操作系统告诉你什么价值,@ Leonix.`HInstance`是Delphi在程序启动时为您初始化的全局变量.它在*SysInit*单元中. (3认同)