3

我的问题是,在编译应用程序时,Delphi 编译器会生成并为所有 ResourceStrings 分配数字标识符,很少有文档说,当重新编​​译应用程序时,ResourceStrings 的数字标识符会重新生成,并且他们警告依赖它,因为它可能会在之后发生变化再生。有很多第三方本地化工具使用和存储此资源字符串数字标识符以供内部参考和翻译。有没有办法阻止编译器重新生成这个资源字符串数字标识符或强制它使用手动生成的数字标识符?

4

2 回答 2

2

您无法控制编译器如何生成字符串表资源和数字标识符。

如果您希望使用依赖于数字标识符的外部工具,那么您可能应该以经典方式构建字符串表。在文本文件中定义字符串表。编译为资源并链接到特定语言的资源 DLL。这将使编码变得不那么方便,并且由您决定这种权衡是否值得能够使用您的外部工具。

于 2015-05-22T07:01:57.237 回答
2

您可以通过指定 --drc 或“Project|Options|Delphi Compiler|Linker|Output resource string .drc file”开关从编译器获取资源编译器、可编译文件。这将指示编译器生成一个 .drc 文件,该文件将包含资源字符串内容编译器分配的值。

如果您对每个构建都执行此操作,即使编译器重新排列分配的值,您也将始终知道它们是什么。编译器根据单元名称和资源字符串标识符为每个资源字符串生成一个标识符,因此即使发生变化,它也始终是稳定的。

然后可以翻译或以其他方式处理此 .drc 文件,然后将其重新编译为 .res 文件。然后可以将此 .res 文件链接到一个特殊的“仅资源”dll 中,该 dll 具有特定的扩展名,而不是表示语言的“.dll”。正确设置系统语言后,将加载此 dll 并使用字符串而不是内置资源。

于 2015-05-22T17:30:04.107 回答