我只想分发一个.exe,但是,在运行时我希望它将一些嵌入式图像资源提取到用户硬盘驱动器。
我可以,如果是,如何?
答案 0 :(得分:17)
使用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而不是字符串名称。
答案 1 :(得分:4)
创建TResourceStream
。您需要模块实例句柄(通常SysInit.HInstance
用于当前EXE文件,或者您从LoadLibrary
或LoadPackage
获得的任何资源类型(例如rt_Bitmap
}或rt_RCData
),以及资源名称或数字ID。然后调用流的SaveToFile
方法。
答案 2 :(得分:2)
try
if not Assigned(Bitmap)
then
Bitmap := TBitmap.Create();
Bitmap.LoadFromResourceName(HInstance,SRC);
except
on E:Exception do
ShowMessage(e.Message);
end;
然后将位图保存到磁盘。
答案 3 :(得分:1)
如果您需要使用资源本身,也许这可能会派上用场。 Delphidabbler / ResourceFiles