我希望只发布一个单独的 .exe 文件,但在运行时,我想将一些嵌入的图像资源提取到用户的硬盘驱动器上。
我能做到吗?如果可以,怎么做呢?
我希望只发布一个单独的 .exe 文件,但在运行时,我想将一些嵌入的图像资源提取到用户的硬盘驱动器上。
我能做到吗?如果可以,怎么做呢?
使用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;
如果您可以使用资源ID而不是名称,则会减少一些内存。在这种情况下,您将使用CreateFromID替换Create,并提供数值ID而不是字符串名称。
TResourceStream
。您需要模块实例句柄(通常为当前EXE文件的SysInit.HInstance
,或者从LoadLibrary
或LoadPackage
获取的任何内容),资源类型(如rt_Bitmap
或rt_RCData
),以及资源名称或数字ID。然后调用流的SaveToFile
方法即可。try
if not Assigned(Bitmap)
then
Bitmap := TBitmap.Create();
Bitmap.LoadFromResourceName(HInstance,SRC);
except
on E:Exception do
ShowMessage(e.Message);
end;
然后将位图保存到磁盘。
HInstance
是一个全局变量,Delphi 在程序启动时为您初始化它。 它在 SysInit 单元中。 - Rob Kennedy