由隐含导入的单元引起的EPackageError

时间:2014-10-28 13:31:57

标签: delphi ide package packages

我目前参与了Delphi XE5项目,我遇到了一个我无法解决的问题。我有一个Delphi项目组,它包含一个EXE;此EXE动态加载多个运行时BPL。这些BPL也是项目组的一部分。但是,当我运行应用程序时,我收到了错误' Project {MyProject.exe}引发的异常类EPackageError,其中包含消息'无法加载包' PumpMethod'。它包含单位' FlEdit',它也包含在包裹' eXtractionUnitMethod'。

我已经搜索了SO,我找到了原因。特别是Is "implicitly imported" always a bad thing in Delphi packages?有很大的帮助。在编译期间,我的项目的两个BPL都会发出以下消息:

[dcc32警告] PumpMethod.dpk(46):W1033单位' FlEdit'隐式导入包' PumpMethod'

另外一个:

[dcc32警告] eXtractionUnitMethod.dpk(46):W1033单位' FlEdit'隐式导入到包裹' eXtractionUnitMethod'

但关键是FlEdit是一个只允许输入浮点数的文本框控件,它已经是已安装软件包的一部分。这个包,Spark190.bpl'包含控件,因此也包含FlEdit单元。我已经注册了它,控件出现在工具面板上。这是带控件的项目:

enter image description here

还有一个项目DclSpark190.bpl,但这是一个设计时包(包含控件的注册)。当我关闭这个项目组并创建一个新项目组时,我可以拖放'我的浮动编辑'在表格上,这一切都很好。

当我现在用EXE打开项目组并构建BPL时,我得到了这样的信息:

enter image description here

这对我来说似乎没问题。 Spark包(带有FlEdit)现已包含在'要求'列表:

enter image description here

但是当我再次编译时,'以下更改......'再次显示。这看起来不正常; Spark BPL已包含在需求清单中?所以:

Q1:为什么会这样?这是Delphi XE5中的错误吗?我这里有什么问题吗?

此外,' FlEdit'隐式导入包' PumpMethod'仍然没有离开:

enter image description here

所以:

Q2:我认为我已经将FlEdit放在一个单独的包装中了Spark'。 BPL都包含' Spark'在所需的包列表中,但仍显示警告(W1033)。我还能做什么?

0 个答案:

没有答案