Delphi XE显示至少200个错误,但程序编译得很好

时间:2011-05-20 20:20:44

标签: delphi delphi-xe

我全新的Delphi XE在“结构”面板中显示数百个错误。它显示错误,如“第130行未声明的FileExists”或“第242行未声明的创建”。即使它显示了这些错误,程序编译也很好。

我也看到代码洞察并不总是有效。当我将光标移到变量上时,光标开始闪烁,不会出现弹出窗口。其他时候,它只是突出显示一些红色单位,它说它找不到它们。

有解决所有这些问题的技巧吗?


更新/伪修正:
我发现重启IDE有一段时间了 我真的很有帮助,有一天Embarcadero将发布Delphi ST(来自STable) :)

6 个答案:

答案 0 :(得分:8)

是的,已知CodeInsight和ErrorInsight存在很多问题。他们现在已经有一段时间了,但是还有很多工作要做。 Andreas Hausladen可能是Delphi社区中最聪明的人,他在IDE内部做了大量工作,他说他们有基于竞争条件的错误,如果没有完全重写,可能无法修复。

如果这些假错误给你带来麻烦,你可以禁用它们,就像Ken在评论中提到的那样。

答案 1 :(得分:4)

对我来说,通常有助于关闭项目并重新打开它;结构错误消失了。

答案 2 :(得分:2)

如果您保持图书馆条目的最新状态,似乎很多错误洞察问题都会消失。

这是曾经有人在AGES之前就早期Delphi版本的问题报告所指出的,似乎没有人接受过它。如果错误洞察在LIBRARIES列表中遇到一个不存在的文件,那么它似乎停止了进一步的观察 - 让那些恼人的红线曲折到处都是!麻烦的是,问题报告有这么多条目,每个人似乎都不知道该解决方案!

转到“工具 - 选项”,找到“LIBRARY”选项卡。浏览列表并删除所有ABSOLUTE但无效的条目。你可能并且最初应该留下任何有变量的东西,比如$(BDSLIB),即使是无效的,但绝对可以从删除无变量声明的无效变量开始(这就是我所说的绝对值)。如果你是gung-ho并且让Delphi自动删除无效的那些,所有那些带有“未实现”变量的人也会消失 - 这将打破很多事情(这是我认为这个论坛中其他地方讨论的另一个Delphi错误)。您可能还需要使用Project-Options库重复此操作,但如果项目来自其他人,请在此处更加谨慎!

如果没有立即执行该作业,则使用相应的选项选项卡关闭Error-Insight复选框,然后再次打开(每次关闭选项对话框)。这应该摆脱任何缓存的东西,如果存在的话。

只删除一些在Delphi XE4上为我工作的无效条目。

答案 3 :(得分:1)

我们注意到为什么会出现问题。 如果代码中存在一些无效的不可见字符,则显示为错误。当您复制一些文本并粘贴在delphi编辑器中时,有时会出现这些无效字符。然后,有时delphi粘贴带有无效字符的文本!

enter image description here

首先,您应该复制所有错误文本并将其粘贴到notepad ++上。 enter image description here

您将看到您复制的所有文字也不会被粘贴。 您将看到损坏的文本。您应该查看粘贴的代码,确定粘贴为文本的代码。你应该看看你在记事本上看到的哪个代码是粘贴的最后一个字符。

enter image description here

这里我们可以看到捕获的图片:“RoutePatternObject”;“ 所以在这些字符之后会出现一些无效字符但我们看不到!

所以我们在“;”字符后选择这些文本区域。 然后再次删除并重新键入已删除的代码!

enter image description here

所有红色下划线签名都将消失!

enter image description here

答案 4 :(得分:0)

之前我遇到过同样的错误,我问了同样的问题,这是回复: 来自另一篇文章:

  

你没有犯错。问题是有三个   XE2中的编译器(与之前版本的Delphi一样):真实的   编译器(工作正常),Code Insight编译器(即   更快),Error Insight编译器(必须更快),   和语法高亮解析器(这是最快的)。

     

XE2引入了许多使得普通编译器的功能   更慢,并给了Code Insight和Error Insight编译器一些   麻烦。首先,我们有新的目标:Win32,Win64和OSX   这导致每个目标的搜索路径不同(请参阅   $ PLATFORM指令),以及构建配置,尽管有   每个PLATFORM只有一个“库路径”(而不是构建版本)   配置)。

     

第二个复合因素是虚线单位名称(作用单位)   引入的名称)。 Windows不再是Windows,而是   Winapi.Windows。

     

我的猜测是这两个额外的复杂因素导致   Code Insight和Error Insight编译器的问题。注意   真正的编译器仍然有效。但Error Insight显示不正确   错误,Code Insight并不总是适用于这些单位。

     

您可以尝试再次将它们显式添加到项目中(其中   如果您在问题中提到,将使用完整路径   堆栈溢出也是如此)。

我发现的是:

  1. 99%的错误是由于编辑过的文件无法正确保存 (包括参考文献)
  2. 如果添加配置文件保存.dpr,.dproj,.pas,.dfm文件(保存 单位,保存项目)
  3. 如果全部失败,则保存+重启通常会修复它
  4. 对于较旧的项目,删除.res文件,它有拙劣的路径, 德尔福将重新创建它。
  5. (抱歉初版帖子不好,刚收到Stackoverflow帐号,不允许编辑它。我希望这样就够了)

答案 5 :(得分:0)

将pas文件复制并粘贴到记事本中,清除pas文件,保存,关闭IDE,打开IDE,然后从记事本复制并粘贴回适合我的pas文件。