经过一番研究后,我决定用不同的方式说出问题: 我有一个应用程序和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包中找到
我缺少什么?
答案 0 :(得分:6)
检查您的依赖项。第二个包“classImplementations.bpl”需要在其requires
子句中包含第一个包。
此外,主可执行项目需要在项目选项的运行时包列表中列出第一个包。