我在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'
答案 0 :(得分: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 +,Z 1}
如果在使用此行后它可以正常工作,那么您的项目选项与CodeGear用于编译RTL / VCL的设置不兼容。
BTW:第2536行是仅包含文本“type”的行。你有没有改变文件?或者你错过了Update 1?
答案 1 :(得分:1)
我遇到了与DB.pas相同的问题,但从未修改过任何VCL单元。因此,原因显然必须是我的项目。将发送运行时类型信息切换为 false 可以解决问题。
(项目选项:Delphi编译器 - >编译 - >代码生成 - >发送运行时类型信息)