我在Delphi7中的后台编译器出现问题:在我的项目中有一行代码导致后台编译器停止并显示一条错误消息,因此无法执行CodeCompletion。正常的编译器和语法检查对此代码没有问题,并且生成的应用程序是正确的。在后台跳过源代码(kibitz)编译器
我的问题是,如果在执行后台编译时有任何方法跳过此代码行(例如编译器指令)。
实施例的代码重现该错误:
procedure ProduceKibitzError;
var
v : Variant;
begin
v.End; // This line stops kibitz compiler
end;
此代码放置在其在主单元中使用的单位“Error.pas”。 如果您尝试在主单元中调用CodeCompletion,它会停止并显示消息“Error.pas could not be compiled”(真实消息是德语)。
有趣的是,只有在编译项目或首次执行语法检查时才会出现错误。 编译后CodeCompletion正在工作,Delphi必须重新启动才能重现错误。
更新: 添加一个空的汇编程序块与一个结束标签是一个问题的解决方案。 这里是改变的示例代码,不停止后台编译:
procedure ProduceKibitzError;
var
v : Variant;
begin
asm
@@END:
end;
v.End;
end;
非常感谢,
基督教
护理后什么代码*一行*和* errormessage的*是什么样子? – 2009-08-10 10:56:47
您可以尝试在此例程中添加一个空的asm/end块。它可以防止kibitz编译器跳过程序分析。 Graphics.pas有一个带有@@ end标签的asm/end块,编译器专门处理asm/end块。 – 2009-08-10 15:51:03