【发布时间】:2014-07-21 11:52:31
【问题描述】:
我在 Delphi VCL 单元 Grids.pas 中找到了一个 bug (QC#25702) 的解决方法,因此我将该文件复制到我的项目的源文件夹中,将其添加到项目中并更改了几行代码。那是在 Delphi 2007 中,一切都按预期工作。
现在,使用 Delphi XE2,项目不再编译。它抱怨不兼容的类型“TCustomGrid”和“TdzVirtualStringGrid”(它是 TCustomGrid 的后代)。事实证明,一个单元引用了我在 Grids.pas 副本中声明的 TCustomGrid,另一个单元引用了 Vcl.Grids.pas 中声明的 TCustomGrid。即使两个单元在它们的使用子句中都有“网格”(而不是 Vcl.Grids),也会发生这种情况。知道如何解决这个问题吗?
【问题讨论】:
-
您描述的过程已知有效。很明显,一些具体的细节出了差错。有些具体是不正确的。我们只能猜测那可能是什么。是否存在过期的 dcu 文件?或者,也许您将 D2007
Grids(带有模组)添加到 XE2 项目中。尝试进行一些调试以查找特定的环境问题。 -
我正要使用 XE2 中的 Vcl.Grids 单元重复该过程(将其放在不同的子目录中,以便仅包含项目的 XE2 版本)。事实证明,该错误显然已在 XE2 中修复,因此我只是从项目中删除了 Grids 单元,将 Delphi 2007 文件移动到子目录中,并将其仅包含在项目的 Delphi 2007 版本中。
-
不幸的是,这仍然不能解释为什么在同一个项目中显然使用了两个单元。删除所有 dcu 文件并没有帮助,但因为我现在只在 Delphi 2007 中使用修改后的单元,所以错误消失了。那么,我该如何结束这个问题呢?它没有真正得到回答,但不再相关。