0

.RC ​​文件中的某些资源在生成的 .exe 中不可用,其 ID 在 .RC 文件中给出。我有一个 RC 文件,其中包含 id 为 10000、10100 等的资源字符串。由于某种原因,当我加载 id 为 10000 (LoadStr(10000)) 的资源时,它会加载另一个字符串('无效字段类型。'-在 midas.rc 中声明来自 VCL 并且具有相同的 id)。

我假设具有相同 id 的资源在构建过程中会导致“[Error] WARNING. Duplicate resource(s)”。但是没有与链接器相关的警告。

ps我使用的是Delphi 2010。

更新:

  • 该问题的解决方法是将 id 从 10000 更改为其他值。10050,例如

问题:

  • 为什么重复资源没有警告?
  • 可以做些什么来防止将来出现这个问题?

我的项目.inc

const
  offLanguages   = 10000;
  offCurrencies  = 10100;

我的项目.RC 文件

LANGUAGE LANG_LATVIAN, SUBLANG_NEUTRAL

#include "myproject.inc"

STRINGTABLE
{
 offLanguages+0, "LV"
}

.. etc...

rc 文件被编译为 myproject.res 文件。并且生成的 .res 文件具有 ID 为 10000 的正确字符串“LV”(我使用资源编辑器进行了检查)。

在 delphi coude 中,资源被加载到单元的初始化部分,使用 LoadStr 函数。

喜欢那个.pas:

unit likeThat;

interface

{$I *.inc}
{$R *.res}

// skipped

initialization
  Assert(LoadStr( offLanguages )= 'LV'); // <== fails here
4

0 回答 0