【问题标题】:How ResourceString Identifiers are generated by delphi compiler?delphi 编译器如何生成 ResourceString 标识符?
【发布时间】:2015-05-22 06:48:41
【问题描述】:

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

【问题讨论】:

    标签: delphi resourcestring


    【解决方案1】:

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

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

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

    【讨论】:

    • 这将如何与维护中的项目一起使用?您添加新字符串。你回到你的外部工具。您加载了特定语言的最新翻译,但数字发生了变化。现在它很困惑。
    • 你看过.drc文件的内容了吗?先看看这个,然后你就可以理解它是如何工作的了。
    • 我明白这一点。我只是想知道外部工具如何处理流沙。
    • 因为它们使用标识符,而不是原始数字。其他工具如何处理带有资源字符串的普通手动构建的 .rc 文件?通常,他们希望使用一个固定的标识符,而不管实际值。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多