在包B中注册的Delphi类在包B中找不到

时间:2014-04-02 11:21:12

标签: delphi

经过一番研究后,我决定用不同的方式说出问题: 我有一个应用程序和2个包(BaseClasses和ClassImplementations)。 BaseClasses通过在application uses子句中包含一个单元来加载:

uses
  BaseClasses;

ClassImplementations通过LoadPackages加载:

LoadPackage("classImplementations.bpl");

从我的应用程序中,我调用位于BaseClasses中的解析器:

Parser.Parse(txt)

在我的基类中调用代码时,我有一个“is”条件,检查实现类是否是某个基类。

if classImpl is BaseClass then

此条件返回false。

但是,如果我通过在我的应用程序使用子句中加载我的ClassImplementations包,那同样的条件将返回true:

uses
  BaseClasses, ClassImplementations;

这意味着在包BaseClasses中没有在ClassImplementations包中注册的类。

应用程序使用运行时包,包含rtl和vcl。我看到初始化部分,包含我在classImplementations中的registerclass方法被调用,它确实找到了我在应用程序中需要的类,但没有在BaseClasses包中找到

我缺少什么?

1 个答案:

答案 0 :(得分:6)

检查您的依赖项。第二个包“classImplementations.bpl”需要在其requires子句中包含第一个包。

此外,主可执行项目需要在项目选项的运行时包列表中列出第一个包。