0

我在 Delphi 2009 的 TFields 实现中发现了一个错误,并编写了一个快速补丁。我将 DB.pas 复制到我的项目文件夹并将其添加到项目的文件列表中,但现在我无法编译它。当我转到代码中指定的位置时,前两个错误消息甚至没有任何意义。

当然,如果可以指望任何东西都能正确编译,那就是 CodeGear 的代码。他们已经设法编译它,生成 VCL 组件。那么我错过了什么?这是编译器的输出:

[DCC Error] DB.pas(2536): E2134 Type 'Pointer' has no type info
[DCC Error] DB.pas(10799): E2066 Missing operator or semicolon
[DCC Error] DB.pas(12933): E2217 Published field 'FCursor' not a class or interface type
[DCC Error] DB.pas(12934): E2217 Published field 'FTitle' not a class or interface type
[DCC Fatal Error] testing.dpr(23): F2063 Could not compile used unit '..\..\..\vclpatch\DB.pas'
4

2 回答 2

6

如果您在 DB.pas 单元的顶部添加以下行是否有帮助。

{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N-,O+,P+,Q-,R-,S-, T-,U-,V+,W-,X+,Y+,Z1}

如果使用此行后它可以工作,那么您的项目选项与 CodeGear 用于编译 RTL/VCL 的设置不兼容。

顺便说一句:第 2536 行是仅包含文本“类型”的行。你改过文件吗?还是您缺少更新 1?

于 2008-12-07T22:50:51.810 回答
1

我在使用 DB.pas 时遇到了同样的问题,但从未修改任何 VCL 单元。所以原因显然必须是我的项目。将Emit 运行时类型信息切换为false可以解决问题。

(项目选项:Delphi Compiler -> Compiling -> Code generation -> Emit runtime type information)

于 2009-01-28T12:45:51.977 回答