在Delphi 7中,每当我控制+单击一个函数/过程时,我就会使用该函数/过程。但它在Delphi XE中不起作用 - 至少在所有功能上都没有。我在ExtUtils.pas中有一个名为Associate的函数 该函数被正确编译,因此编译器可以找到ExtUtils.pas(当然,ExtUtils被添加到Uses子句中,其文件夹被添加到'Library path'中)。但是,当我控制+单击功能或单位名称时,它不会带我到那里。
有什么方法可以解决这个问题吗?
UPDATE1: 另外,Control +单击一个函数(在当前单元中声明)不会将光标移动到声明函数的INTERFACE部分。
UPDATE2:
我临时将ExtUtils单元放在项目的文件夹中,现在它可以工作了。因此,Control + Click本身可以工作,但似乎IDE在查找单元时遇到问题,即使它的文件夹存在于库路径和浏览路径中。
类似报道:
http://webcache.googleusercontent.com
http://webcache.googleusercontent.com
http://cc.embarcadero.com/Item/28269
这里有一份报告(见下面的答案)
新测试:
我已完全卸载Delphi(并手动删除文件和注册表剩余部分)。然后重新安装。没有安装除CodeSite之外的其他工具,甚至没有安装数据库。然后我创建了一个新项目。它包含一个按钮。当我单击该按钮时,它会运行TestMe过程,该过程在名为TestUnit.Pas的外部PAS文件中定义。我在“库路径”和“浏览路径”中添加了此库的路径。但控制+点击TestMe程序仍然无法正常工作!如果我将鼠标悬停在TestMe过程上,则弹出窗口显示“在TestUnit中声明”,其中“TestUnit”字是蓝色链接。如果我点击它,我会听到Windows系统声音,但IDE不会把我带到那里(到设备)。
TestMe程序是:
procedure TestMe;
begin
Beep(800, 500);
end;
如果我控制+单击Beep程序,它会转到Windows.pas。所以,这是有效的。 如果您考虑到不同的测试,请告诉我。
更新:
现在它有效!没有任何明显的原因!我只是打开和关闭并编译项目。但我对Delphi没做任何更改,除了这两个:AutoSave选项 - >编辑器文件和项目选项。
更新:
这不可能是!!!
所以,现在我可以在控制+点击TestMe程序时访问TestUnit.pas文件。
因此,我将原始PAS文件(ExtUtils.pas)移动到TestUnit.pas所在的同一文件夹中,该文件不想在我的初始测试(Delphi重新安装之前)中工作。猜猜看:我可以打开(通过控制+点击)TestUnit.pas,但不能打开ExtUtils.pas !!!!
德尔福行为如此奇怪和不一致!
更新:
我编辑了ExtUtils.pas,现在我无法打开AGAIN TestUnit.pas。
Ken White不会让我说德尔福可能有错误。所以我不能将'bug'和'Delphi'一起使用。有人可以把这些话放在一起吗?
更新:
我完全删除了对ExtUtils.pas的任何引用 - 所以我将项目恢复到了它的工作点(使用TestUnit)。但现在这个bug仍然存在。即使它在使用TestUnit之前几秒钟,它现在再也无法工作了。
更新:
现在我意识到一件重要的事情:在我的源代码中(在测试项目中)我有一行可编译的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
TestMe;
end;
此代码不显示蓝点 - 因为它不会被编译。在该计划有效的几分钟内,我看到了蓝点。 我也排除了'AutoSave选项 - >编辑器文件和项目选项可能是导致此问题的原因。
更新:
我找到了解决问题的方法......几分钟:我将项目和库移动到另一个文件夹(任何位置都可以)。控件+单击将工作一段时间。如果我将文件放回原始文件夹,它甚至可以工作。因此,似乎Delphi保留了某些文件的某种缓存。只要缓存被破坏并且它保持缓存,控制+点击就赢了;工作。但是当我移动文件时,它必须重新创建该缓存,这样它才能工作,直到问题重新出现并存储在缓存中。
答案 0 :(得分:7)
这里我们是使用Delphi 2010的5位开发人员和使用XE的2位开发人员,我们遇到了与您一样的Ctrl-click相同的事情。它似乎停止随机工作。我们永远无法找到一种模式或解决方案。因此,我们不时会听到来自小隔间的咒骂......
当发生这种情况时,我使用shift-ctrl-F进行搜索。
西尔
答案 1 :(得分:3)
首先,感谢大家提供有关此问题的提示。也许这是很久以前的问题,但最后,经过多次尝试,我认为问题的原因实际上是“项目源代码”
IDE版本:Delphi XE
请尝试:
>> Delphi编译器>>编译,确保:
调试信息:true
符号参考信息:参考信息
请注意,第2步非常重要,即使第1步完成,如果没有第2步,它仍然无法浏览源。
答案 2 :(得分:3)
我正在使用Delphi 5并且Ctrl-click也存在问题,我不知道它是否仍在新的delphi IDE中工作,但我可以使用CTRL-SHIFT-UpArrow或DownArrow从声明到实现。 希望它有所帮助。
答案 3 :(得分:2)
Delphi中始终存在以下两个不同的选项:
图书馆路径 - 在编译应用时使用。
浏览路径 - 由Code Insight使用,即当控制点击标识符时。
你需要检查第二个。它必须包含您尝试使用 Ctrl +单击导航的源文件的路径。
答案 4 :(得分:1)
我发现如果我在界面部分使用记录类型并且它没有由类型表达式定义,则Ctrl-Click和其他跳跃功能(Ctrl + Shift +向上/向下)将不起作用。
type
TForm1 = class(TForm)
...
public
Something:record
A, B:integer;
end;
procedure DoSomething;
end;
使用上面的代码,我无法使用Ctrl + Shift + Down跳转到该过程的实现。我必须使用的修复:
type
TMyRecord = record
A, B:integer;
end;
TForm1 = class(TForm)
...
public
Something:TMyRecord;
procedure DoSomething;
end;
使用Delphi XE4测试。
答案 5 :(得分:1)
供将来参考。使用Delphi 2010,我发现;
部分virtual
之前的interface
有所不同;
function MyProc(): String; overload; virtual;
function MyProc(): Integer; overload; virtual;
// >> ^ <<
此;
字符可以破坏 CTRL + Click(代码洞察)功能。虽然编译得很好。
答案 6 :(得分:0)
(符号参考信息)除非启用了调试信息和本地符号(见上文),否则此选项无效。
代码完成和代码导航功能(Ctrl + Click)仅在符号参考信息设置为参考信息时有效。