F2051单元ADODB使用不同版本的ADOInt._Command编译

时间:2014-11-23 23:08:23

标签: delphi ado

我继承了一些Delphi 7代码,我正在尝试迁移到Delphi 2010。 我已经完成了必要的所有表格和代码更新,但是当我尝试运行时,我在上面的标题中得到了消息。 我有4个访问数据库文件,由程序查询。我在MS Access 2013中打开了它们,它们看起来都很好。 有趣的是,当我创建一个新项目并添加相同的ADO组件时,网格中显示的数据就好了。 我已经尝试了与F2051错误相关的论坛上列出的各种选项,但无济于事。 任何人都可以建议我可能出错的地方。 聪明的想法。

1 个答案:

答案 0 :(得分:3)

检查项目源(DPR)和/或迁移的应用程序项目的设置。

您可以在uses列表中找到引用通常属于VCL / RTL的ADO单元的显式条目。

或者,您可能会发现相关的ADO * .pas文件已放置在与DPR文件本身相同的位置。

或者,您可以在项目搜索路径中引用的位置找到这些单位。

无论哪种方式,问题很可能是旧项目从VCL源代码中取出单元并将它们放在项目特定位置以便允许对这些单元进行更改的结果。这是一种修复VCL单元中的错误的技术,只要不修改单元的接口和/或所有相关单元都进行类似的重新编译,就可以正常工作。

单位的interface部分确定其他单位如何与其相关联,如果更改该界面,则与其他单位的链接将被破坏。如果这些其他单位可以重新编译,那么这就解决了,但是对于VCL单位,它经常会导致这些问题,因为其他单位通常重新编译。

一旦确定了项目中涉及的已更改的VCL单元,就应该将更改的版本与随后的编译器(Delphi 2010)提供的版本进行比较。您可能会发现Delphi 7项目中的更改是为了修复现在在单元的标准VCL版本中修复的错误,在这种情况下,您可以从项目中删除已修改的ADO VCL单元,只需使用VCL版本。 / p>

或者,您可能会发现Delphi 7单元中所做的更改需要移植到Delphi 2010版本,在这种情况下,您应该复制项目组织,以便在Delphi 2010项目中使用Delphi 2010项目重新编译相关单元Delphi 2010单元,然后将Delphi 7版本的更改合并到Delphi 2010单元中:

Delphi 7 original.pas            Delphi 2010 original.pas

      ^                                      \
    diff  --------------------------------> port
      v                                       _\|

Delphi 7 modified.pas                   Delphi 2010 modified.pas

请注意,如果Delphi 2010原始版本与Delphi 7原始版本不同,那么您必须小心移植项目所需的更改,而不撤消其他修复,并且不会影响已修改单元的interface