我的问题就像Delphi编译器在编译应用程序时生成并分配数值标识符给所有的ResourceStrings,很少有文档说当应用程序被重新编译时,会重新生成ResourceStrings的数值标识符,并且它们警告依赖于它,因为它可能会在重新生成后发生变化。有很多第三方本地化工具使用并存储这个资源字符串数字标识符,用于内部引用和翻译。是否有任何方法可以阻止编译器重新生成此资源字符串数字标识符或强制它使用手动生成的数字标识符?
您可以通过指定——drc或"Project|Options|Delphi compiler |Linker|Output resource string .drc file"开关从编译器中获得一个资源编译器,可编译的文件。这将指示编译器生成一个.drc文件,该文件将包含资源字符串内容和编译器分配的值。
如果您在每次构建时都这样做,即使编译器重新排列分配的值,您也将始终知道它们是什么。编译器根据单元名和资源字符串标识符为每个资源字符串生成一个标识符,因此即使值发生变化,也始终是稳定的。
这个。drc文件可以被翻译或以其他方式处理,然后重新编译成一个。res文件。然后,这个.res文件可以链接到一个特殊的"仅限资源"的dll中,该dll具有指示语言的"。dll"以外的特定扩展名。当正确设置系统语言时,将加载此dll,并使用字符串而不是内置资源。
您无法控制编译器如何生成字符串表资源和数字标识符。
如果您希望使用依赖于数字标识符的外部工具,那么您可能应该以传统方式构建字符串表。在文本文件中定义字符串表。编译成资源并链接到特定于语言的资源DLL。这将使编码变得不那么方便,并且由您来决定这种权衡是否值得使用外部工具。