Delphi代码自动完成失败

3
我们使用Embarcadero Delphi 2010,最近对一个中等规模的项目的其中一个单元进行了更改,导致代码完成完全停止工作——但只在此项目内部,其他项目仍然正常工作。我感到困惑,于是在互联网上搜索了一些线索,但我的搜索并不太成功。
据我所知,IDE有几个解析器/编译器完全独立于彼此工作,这使得更快的代码完成编译器可能会失败,而主编译器则不会。这正是发生在我的项目中的情况。
我的问题是:有没有办法找出代码洞察/代码完成编译器到底在哪里失败了?IDE是否在任何地方记录即时解析/编译的日志?

@PieterB 哪些 #defines? - David Heffernan
@Pieter:谢谢!我已经完成了。我还检查了其他已知会对代码完成引擎造成麻烦的情况,例如在try-finally块的最后一行缺少分号或重复的{$R *.res}项。 - MiGz
@user1595471 为什么你要这样做检查?你说有一个变化导致了这个问题。好吧,你的版本控制系统可以隔离出那个变化。请告诉我你有版本控制。 - David Heffernan
项目构建成功了吗? - Marcus Adams
你删除了所有的辅助文件吗?创建一个新的工作副本。 - David Heffernan
显示剩余7条评论
2个回答

1

有没有办法找出代码提示/代码完成编译器失败的具体位置?

不容易,除非调试IDE。

IDE是否在任何地方记录即时解析/编译的日志?

没有。


我建议您安装Andy Hausladen的IDEFixPack。如果这不起作用,那么请使用您的版本控制来隔离导致问题的代码更改。并找到一种不会破坏代码完成的编写代码的不同方法。尝试和错误可能是最有效的方法,在此我不得不说。

感谢你提供的IDEFixPack的建议。不幸的是,在安装后,我无法再构建我的项目。它立即在IDEFixPack的DLL文件中发生了访问冲突导致构建失败。好在卸载操作成功了。:-) - MiGz
我本来想要一个以“Yes”开头的答案,哈哈。开个玩笑,感谢你的回复。我想我只能放弃了,开始向老板们施压升级编译器了。谢谢。 - MiGz
我可以谦虚地建议您考虑升级到XE5吗?2010版本并不是非常稳定。XE、XE2和XE5都更加稳定,并且修复了许多编译器和IDE的错误。是否所有的代码补全和错误提示问题都得到解决?并非如此,但是很多很多的错误都已经修复了。 - Warren P

0

我最近在使用Delphi 10.2时遇到了同样的问题。经过大量研究,我发现我不小心在类型部分声明了一个变量,并在下一行加上了end;。删除错误后,代码完成功能恢复正常。因此,我建议检查接口是否存在错误或从目录历史记录中恢复备份。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接