我只想分发一个 .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
. 您将需要模块实例句柄(通常SysInit.HInstance
用于当前 EXE 文件,或者您从LoadLibrary
or获得的任何内容LoadPackage
)、资源类型(例如rt_Bitmap
or 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;
然后将位图保存到磁盘。
如果您需要使用资源本身,这可能也会派上用场。 Delphidabbler / 资源文件