如何从BPL代码中高效提取资源文件在Delphi中?

更新于
2026-10-03 09:47:51
0阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计165个文字,预计阅读时间需要1分钟。

如果我在EXE中有一个资源并希望提取它,那可就复杂了。就像这样:`stream :=TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);` 这方法是有效的,因为全局变量HInstance是EXE的句柄。BPL中的代码是否正确?

如果我在EXE中有一个资源并且我想要提取它,那就非常简单了.就像是:

stream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);

这是有效的,因为全局变量HInstance是EXE的句柄. BPL中的代码有没有类似的方法来获取它所属的包的句柄,所以我可以从中提取资源?

HInstance实际上是在SysInit单元中,每个PE(package,exe,dll)都是唯一的.如果使用rtl包,则在包中共享大量编译器RTL和辅助函数的系统.

因此,您在上面显示的代码应该可以在包中正常工作. MainInstance可能是你正在考虑的加载exe的句柄(在某些情况下甚至是DLL).

本文共计165个文字,预计阅读时间需要1分钟。

如果我在EXE中有一个资源并希望提取它,那可就复杂了。就像这样:`stream :=TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);` 这方法是有效的,因为全局变量HInstance是EXE的句柄。BPL中的代码是否正确?

如果我在EXE中有一个资源并且我想要提取它,那就非常简单了.就像是:

stream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);

这是有效的,因为全局变量HInstance是EXE的句柄. BPL中的代码有没有类似的方法来获取它所属的包的句柄,所以我可以从中提取资源?

HInstance实际上是在SysInit单元中,每个PE(package,exe,dll)都是唯一的.如果使用rtl包,则在包中共享大量编译器RTL和辅助函数的系统.

因此,您在上面显示的代码应该可以在包中正常工作. MainInstance可能是你正在考虑的加载exe的句柄(在某些情况下甚至是DLL).