更新1: 此外,在当前单元中声明的函数上按Control+Click无法将光标移动到INTERFACE部分,其中函数被声明。
更新2:
我将ExtUtils单元暂时放在项目文件夹中,现在它可以工作了。因此,Control+Click本身是有效的,但似乎IDE在查找单元时存在问题,即使其文件夹存在于库路径和浏览路径中也是如此。
类似报告:
http://webcache.googleusercontent.com
http://webcache.googleusercontent.com
http://cc.embarcadero.com/Item/28269
此处有一份报告(请见下面的答案)
新测试:
我已经完全卸载了Delphi(并手动删除了文件和注册表残留物)。然后重新安装。除了CodeSite之外,没有安装任何其他工具,甚至没有数据库。然后我创建了一个新项目。它包含一个按钮。当我点击按钮时,它会运行在名为TestUnit.Pas的外部PAS文件中定义的TestMe过程。我在库路径和浏览路径中添加了此库的路径。但是,对TestMe过程进行控制+单击仍然无法正常工作!如果我将鼠标悬停在TestMe过程上方,则弹出窗口会显示“在TestUnit中声明”,其中“TestUnit”一词是蓝色链接。如果我单击它,我会听到Windows系统声音,但IDE不会将我带到该单元。
TestMe过程如下:
procedure TestMe;
begin
Beep(800, 500);
end;
如果我按下control+click Beep过程,它会带我到Windows.pas。所以这个是有效的。 请让我知道如果你有不同的测试想法。
更新:
现在它工作了!没有任何明显的原因!我只是打开、关闭和编译了项目。但我除了这两个之外没有对Delphi进行任何更改:AutoSave选项->编辑器文件和项目选项。
更新:
这不可能!!!
所以,现在我可以在控制+单击TestMe过程时访问TestUnit.pas文件。 所以,我将原始PAS文件(ExtUtils.pas)移动到与TestUnit.pas相同的文件夹中。猜猜怎么着:我可以打开(用control+click)TestUnit.pas但不能打开ExtUtils.pas!!! Delphi表现得如此奇怪和不一致!
更新:
我编辑了ExtUtils.pas,现在我又无法打开TestUnit.pas了。 Ken White不允许我说Delphi可能有漏洞。所以我不能把“bug”和“Delphi”放在一起使用。有人能帮我把这些词组合在一起吗?
更新:
我完全删除了对ExtUtils.pas的任何引用 - 因此我将项目恢复到它工作的那个点(使用TestUnit)。但现在这个错误仍然存在。即使在几秒钟前它与TestUnit一起工作,现在它再次不工作。
更新:
现在我意识到一个重要的事情:在我的源代码(测试项目中)中,我有一行可编译的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
TestMe;
end;
这段代码中没有出现蓝色点——因为它没有被编译。在程序运行的几分钟内,我看到了蓝色点。我已经排除了“自动保存选项->编辑器文件和项目选项”可能导致此问题的原因。
更新:
我找到了解决问题的方法……只能维持几分钟:我将项目和库移动到不同的文件夹中(任何位置都可以)。控制+单击将在一段时间内有效。即使我将文件放回原始文件夹中,它也可以工作。因此,Delphi保留了某些文件的缓存。只要缓存被破坏并且它保留了缓存,控制+单击就无法工作。但是当我移动文件时,它必须重新创建该缓存,因此它将在问题重新出现并存储在缓存中之前起作用。