Sji*_*ips 5 ide delphi packages package
我目前正在参与Delphi XE5项目,我遇到了一个我无法解决的问题.我有一个Delphi项目组,它包含一个EXE; 这个EXE动态加载多个运行时BPL.这些BPL也是项目组的一部分.但是,当我运行应用程序时,我收到错误'Project {MyProject.exe}引发异常类EPackageError,消息'无法加载包'PumpMethod'.它包含单元'FlEdit',它也包含在'eXtractionUnitMethod'包中.
我已经搜索了SO,我找到了原因.特别是"隐式导入"在Delphi包中总是一件坏事吗?很有帮助.在编译期间,我的项目的BPL都发出以下消息:
[dcc32警告] PumpMethod.dpk(46):W1033单位'FlEdit'隐式导入包'PumpMethod'
另外一个:
[dcc32警告] eXtractionUnitMethod.dpk(46):W1033单位'FlEdit'隐式导入包'eXtractionUnitMethod'
但问题是FlEdit是一个只允许输入浮点数的文本框控件,它已经是已安装软件包的一部分.这个包'Spark190.bpl'包含控件,因此也包含FlEdit单元.我已经注册了它,控件出现在工具面板上.这是带控件的项目:

还有一个项目DclSpark190.bpl,但这是一个设计时包(包含控件的注册).当我关闭这个项目组并创建一个新项目组时,我可以在一个表单上拖放"我的浮动编辑",这样就可以了.
当我现在用EXE打开项目组,并构建BPL时,我收到了以下消息:

这对我来说似乎没问题.Spark包(带有FlEdit)现在包含在'requires'列表中:

但是当我再次编译时,会再次显示"以下更改......".这看起来不正常; Spark BPL已包含在需求清单中?所以:
Q1:为什么会这样?这是Delphi XE5中的错误吗?我这里有什么不对吗?
此外,隐含导入到"PumpMethod"包中的'FlEdit'仍未消失:

所以:
Q2:我想我已经将FlEdit放在一个单独的包'Spark'中.两个BPL都在所需的包列表中包含'Spark',但仍显示警告(W1033).我还可以做些什么?
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |