Delphi的烦恼,“查找声明”通常不起作用

Posted

技术标签:

【中文标题】Delphi的烦恼,“查找声明”通常不起作用【英文标题】:Delphi annoyances, "find declaration" often doesn't work 【发布时间】:2014-10-17 20:16:49 【问题描述】:

多年来,大多数 Delphi 版本都有这个问题,所以我想知道这是否只是我的代码有问题,或者这是 IDE 的预期行为..

通常,当您将光标放在过程/函数/变量等上时,您可以按 Alt+Up,它会转到声明它的位置,无论是在同一单元中还是在单独的单元中,就像您右键单击并选择“查找声明”,但通常这不起作用,即使当您将鼠标悬停在一秒钟后它告诉您喜欢..“在 xx.pas 中声明”,但它仍然不会去那里。即使我输入 unitname.proc 并尝试在 proc 上,它仍然不会跳转到 proc。如果我先打开一个单元(ctrl+enter over the unit)一次,即使我之后关闭它,它也可以工作。

发生这种情况有什么原因吗?

【问题讨论】:

我唯一一次看到这种行为是代码中有错误(我还没有编译找到它)。 IDE 的解析器偶然发现该错误,并阻止 Code Insight 和 Code Completion 正常工作。如果我实际编译代码并修复错误,它总是会重新开始工作。 即使没有错误也会发生,并且编译得很好。 正如我所说,这似乎对我来说是唯一的方式。我不能代表所有人,这就是为什么我发表评论而不是答案。 :-) @Ken:你使用的是什么版本的 IDE? @Mason:我使用 D2007 和 XE6 和 XE7。 (大部分仍然是第一个,因为一些遗留的东西不容易移植到 Unicode 和数百万 LOC。我们正在逐步这样做,但对当前代码的持续更改阻碍了这些努力。) 【参考方案1】:

发生这种情况是因为相关系统是由它们自己的特殊解析器驱动的,该解析器与编译器中的解析器不同,而且多年来一直存在很多错误且维护不善。很长一段时间以来,这都是一个已知问题,但对于 Embarcadero 的人们来说,这显然是非常低优先级的。

【讨论】:

我相信他们可以复制它。 使用 XE8 我遇到了同样的问题,所以我推动团队更新到 10.3:同样的故事。在 Embarcadero,如果有的话,这似乎真的是一个低优先级。【参考方案2】:

转到“项目”>“选项...”>“编译器”。

请勾选以下方框:

“调试信息”

“局部符号”

“参考信息”

按“确定”。

重启 Delphi。

这解决了我的问题(Delphi 7)。

祝你好运

【讨论】:

“参考信息”到目前为止效果很好,谢谢。不知何故,我从来没有收到过这个答案的通知,对此感到抱歉。 Delphi Seattle 仍然存在这个问题。【参考方案3】:

我在使用最新(截至 2016 年 5 月 2 日)版本的 RadStudio(RadStudio/Delphi Berlin)时遇到了这个问题。

我的设置或多或少已经与 tcxbalage 建议的设置相匹配。 这是 RadStudio Berlin 的等价物:

项目 |选项... |德尔福编译器 |编译 |调试: 本地符号:true 符号参考信息:参考信息

这是我所做的让“查找声明”支持正常工作的操作:

1) 我改变了 符号参考信息 到“仅限定义”。 2) 按“确定”。 3) 重新打开的项目 |选项并将“符号参考信息”更改回“参考信息”。按“确定”。 4) 重建我的项目。

希望这可以帮助遇到同样问题的其他人。

【讨论】:

我忘了提到我必须将“C:\Program Files (x86)\Embarcadero\Studio\18.0\source\fmx”添加到“Project | Option... | Delphi Compiler | Search path" 所以,这并不是真正的解决方案,只是一种解决方法【参考方案4】:

您是否为包含环境变量的编译单元设置了输出路径?这就是让 CTRL+Click 停止为我工作的原因。

【讨论】:

【参考方案5】:

我在切换到 C++ Builder 10.4 后也遇到了这样的问题。将“使用‘经典’Borland 编译器”设置更改为“真”对我有帮助。

【讨论】:

以上是关于Delphi的烦恼,“查找声明”通常不起作用的主要内容,如果未能解决你的问题,请参考以下文章

短字符串的 Delphi 编译器指令不起作用?

在 delphi 查询中使用 @variables:= 不起作用

Delphi 2010 - 套接字端口 119 不起作用

多维动态数组,为啥不起作用?

NumbersOnly TEdit Delphi 提示不起作用

UITableViewCell 样式字幕多行不起作用