在 Delphi 7 中,每当我控制+单击一个函数/过程时,它都会将我带到该函数/过程。但它不适用于 Delphi XE - 至少不适用于所有功能。我在 ExtUtils.pas 中有一个名为 Associate 的函数。该函数已正确编译,因此编译器可以找到 ExtUtils.pas(当然,ExtUtils 被添加到 Uses 子句中,并且它的文件夹被添加到“库路径”中)。但是当我控制+单击功能或单位名称时,它并没有把我带到那里。
有任何解决这个问题的方法吗?
UPDATE1:此外,Control+Click 一个函数(在当前单元中声明)不会在声明函数的 INTERFACE 部分移动光标。
UPDATE2:
我暂时将 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 上的 Control+Click 程序仍然无法正常工作!如果我将鼠标悬停在 TestMe 过程上,弹出窗口会显示“在 TestUnit 中声明”,其中“TestUnit”一词是一个蓝色链接。如果我单击它,我会听到 Windows 系统声音,但 IDE 不会将我带到那里(到设备)。
TestMe 程序是这样的:
procedure TestMe;
begin
Beep(800, 500);
end;
如果我控制+单击 Beep 程序,它会将我带到 Windows.pas。所以,这是有效的。如果您想进行其他测试,请告诉我。
更新:
现在它可以工作了!没有任何明显的原因!我只是打开和关闭并编译了项目。但是除了这两个之外,我对 Delphi 没有做任何更改:AutoSave options-> Editor files 和 Project Options。
更新:
这不可能!!!
所以,现在我可以在控制+单击 TestMe 程序时访问 TestUnit.pas 文件。因此,我将初始测试(在 Delphi 重新安装之前)中不想工作的原始 PAS 文件(ExtUtils.pas)移到了 TestUnit.pas 所在的同一文件夹中。猜猜看:我可以打开(通过控制+单击)TestUnit.pas 但不能打开 ExtUtils.pas !!!
德尔福的行为如此奇怪和不一致!
更新:
我编辑了 ExtUtils.pas,现在我无法再次打开 TestUnit.pas。Ken White 不会让我说 Delphi 可能有错误。所以我不能将“错误”与“德尔福”一起使用。谁能帮我把这些词拼在一起?
更新:
我完全删除了对 ExtUtils.pas 的任何引用 - 所以我将项目恢复到它工作的点(使用 TestUnit)。但是现在错误仍然存在。即使在它与 TestUnit 一起工作前几秒钟,它现在也不再工作了。
更新:
现在我意识到一件重要的事情:在我的源代码(在测试项目中)我有一行可编译代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
TestMe;
end;
此代码不会出现蓝点 - 因为它不会被编译。在程序运行的那几分钟里,我看到了蓝点。我还排除了“自动保存选项-> 编辑器文件和项目选项”作为此问题的可能原因。
更新:
我找到了解决问题的方法......几分钟:我将项目和库移动到不同的文件夹中(任何位置都可以)。控制+单击将工作一段时间。如果我将文件放回原始文件夹,它甚至可以工作。因此,Delphi 似乎保留了某些文件的某种缓存。只要缓存被破坏并保留缓存,控制+单击就不会起作用。但是当我移动文件时,它必须重新创建该缓存,以便它可以工作,直到问题再次出现并存储在缓存中。