Delphi 为什么德尔福说;使用不同版本的yyy编译的xxx单元;如果我的路径都正确?

Delphi 为什么德尔福说;使用不同版本的yyy编译的xxx单元;如果我的路径都正确?,delphi,delphi-2006,Delphi,Delphi 2006,首先,我想为这个问题本身道歉。我简直无法做得更好。好的,接下来的问题是例子和详细的 我从他们的源代码手动安装了QuickReport Delphi 2006。它由“设计时间”和“运行时”两个包组成 My Delphi配置为在“D:\BPL”中为在My Delphi上编译的所有包构建BPL文件,在“D:\DCP”中构建DCP文件 QuickReport的源代码位于“D:\QuickReport”中,其包(设计和运行时)配置为将编译单元(DCU)保存在文件夹“D:\QuickReport\DCU”中

首先,我想为这个问题本身道歉。我简直无法做得更好。好的,接下来的问题是例子和详细的

我从他们的源代码手动安装了QuickReport Delphi 2006。它由“设计时间”和“运行时”两个包组成

My Delphi配置为在“D:\BPL”中为在My Delphi上编译的所有包构建BPL文件,在“D:\DCP”中构建DCP文件

QuickReport的源代码位于“D:\QuickReport”中,其包(设计和运行时)配置为将编译单元(DCU)保存在文件夹“D:\QuickReport\DCU”中。这是在包中完成的唯一配置。没有设置不同的路径,BPL和DCP文件正确地放置在我设置的文件夹中,正如我前面提到的

有了这些设置,我可以毫无问题地构建和安装QuickReport(只有一些编译器警告,我认为这是正常的)。所有QuickReport组件都显示在Delphi中的选项板中,在开始时不会发出任何错误,以证明组件已正确安装并且找到了所有包

现在是测试:我启动了一个新的win32应用程序,完全是空的,只是一个空白表单。然后它放置一个QuickReport组件(TQuickRep)。我注意到的第一件事是,自动放在“interface”的子句“uses”中的单元“QuickRpt”用红色下划线表示出了问题

当我在“QuickRpt”单元(uses子句)中执行CTRL+ENTER时,Delphi会正确地找到源文件(.pas),它位于“D:\QuickReport”中,然后我运行了一个BUILD ALL命令,出现以下编译错误:

[Pascal致命错误]Unit1.pas(7):F2051 Unit QuickRpt是使用不同版本的QRExpr.TQReverement编译的

就这样


此错误仅在快速报告中发生。我使用与路径相同的配置安装了其他第三方组件,它们都工作正常。

最终我解决了这个问题@RRUZ和另一位朋友给了我一个提示:我的系统上有一个丢失的QuickRpt.dcu文件。还有一个QuickRpt.res文件。我找到了它们,但这个地方对我来说太不可能了:delphi LIB文件夹

嗯,关于这件奇怪的事,我有一些线索

在Delphi7之前,QuickReport是与IDE一起提供的,但是默认情况下是禁用的。在Delphi版本上,我们需要做的就是注册bpl以获得对QuickReport的完全访问权

在Delphi2006上,QuickReport不是IDE的一部分,也没有BPL要注册,但是Borland的家伙忘记了从旧的QuickReport中删除所有文件。Delphi Lib文件夹是Delphi start上首先要检查的文件夹之一,因此,如果那里有旧文件,另一个地方的新文件将永远不会被编译,从而产生恼人的错误


Delphi 2005上也可能存在此问题。

路径中必须仍然存在旧dcu版本的
QuickRpt
,请尝试进行全局搜索(类似于cmd.exe中的dir/s QuickRpt.dcu)以查找旧dcu。@RRUZ-您好!谢谢你的回答。我想过要这么做。也许有些DCU在我的系统路径上丢失了,但我认为这太不可能了!我明天做。测试环境正在我的工作中。您确定您有QuickReport源代码(.pas文件)而不仅仅是.dcu文件吗?如果是,则检查Delphi库路径和库路径中提到的所有文件夹,以查看是否有重复的.dcu文件(QuickRep.dcu)。如果您只有.dcu文件,那么这就是您的问题所在-它们是使用旧版本的Delphi编译的(这主要意味着相同Delphi版本的不同更新)。