繁体   English   中英

Delphi在exe / dll中添加和使用多个资源文件* .RES

[英]Delphi adding and using multiple resource files *.RES inside exe/dll

我对在delphi中使用* .RES文件有疑问。

例如,我有两个资源文件:1.RES和2.RES。 这两个RES文件都包含称为IMAGE1(jpg)的不同图像。

我使用以下命令将RES文件添加到Delphi应用程序中:

{$R '1.RES'}
{$R '2.RES'}

如何指定要使用的资源文件? 如果我只有一个RES文件,则在我要检索图像时使用以下命令:

var RS : TResourceStream;
    jpg : TjpegImage;

RS := TResourceStream.Create(HInstance,'IMAGE1',RT_RCDATA);
jpg.LoadFromStream(RS);

现在,如果我有2个RES文件,我怎么知道它将加载什么? 我认为我需要控制HInstance,但我只是不了解如何操作。

给定模块中的资源名称必须唯一,就像函数中的变量必须具有唯一名称,目录中的文件必须具有唯一名称等相同。 因此,如果您将两个具有相同名称的资源放入同一模块,则一个资源将被丢弃,并且您将只能检索剩余的资源。

如果您不清楚模块是什么,我将尽力解释。 模块是DLL或可执行文件或Delphi包。 您的可执行文件是具有单个实例句柄的单个模块。 它链接到DLL,每个DLL是单独的不同模块。 可执行文件加载的所有软件包也是不同的模块。 您可以在其他模块中拥有与可执行文件中的资源同名的资源。

我认为我需要控制HInstance但我只是不了解如何操作。

希望我现在能理解,这无济于事。 HInstance标识模块,并且在您的代码中它表示与可执行文件关联的模块。

您的选择:

  1. 为资源指定不同的名称。
  2. 将资源放入不同的模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM