【问题标题】:How to work around implicitly imported units in Delphi packages如何解决 Delphi 包中隐式导入的单元
【发布时间】:2014-04-29 17:55:34
【问题描述】:

我使用 GnuGetText 来执行本地化。这个单位到处都在使用。所以,当我创建Package A时,GnuGetText被隐式导入。而当我创建Package B时,GnuGetText也被隐式导入。问题是这个单元只能出现在一个Package中。我不明白如何将设备“移动”到一个独特的位置,这样它就不会出现在包 A 和 B 中。

【问题讨论】:

    标签: delphi import package delphi-2007


    【解决方案1】:

    由于GnuGetText 被多个包共享,您需要将其放入自己的包中,然后其他包可以在其Requires 列表中指定。

    【讨论】:

    • 雷米:感谢您的帮助。我为 GnuGetText(它是一个单元,而不是组件)创建了一个新包,并将该新包放在包 A 的 Requires 列表中。当我编译包 A 时,它仍然隐式导入 GnuGetText,这又导致了问题。
    • 它不需要是一个组件才能放入一个包中。独立单元在包中也能正常工作。如果 Package A Requires 你的 GnuGetText 包,那么它不应该再隐式导入 GnuGetText 单元。这就是重点。 Requires 优先。编译器将首先在Required 包中查找GnuGetText 单元(这是允许跨包共享公共单元的原因),只有在没有找到时才会去寻找GnuGetText.dcuGnuGetText.pas 到隐式导入。
    猜你喜欢
    • 2012-01-05
    • 2010-09-10
    • 1970-01-01
    • 2014-08-28
    • 2020-03-06
    • 2010-11-15
    • 2017-12-23
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多