Delphi 7中的“搜索用法”?

3

Delphi XE+有一个“搜索用法”选项。在Delphi 7中是否有类似的选项以查找函数/过程的调用者?我只能进行普通文本搜索或者设置断点,并在运行时查看调用栈中的调用者。这两种方法都非常耗时间且效率低下。

在Delphi XE中打开应用程序并使用“搜索用法”选项是无效的。该应用程序无法编译。


3
虽然不是最理想的方法,但你可以重命名该方法,并查看生成的编译器错误来查找所有调用者 *(那些可以在编译时解决的调用者)*。 - Lieven Keersmaekers
“搜索用法”功能本来就不是很可靠。有时会出现找不到用法的情况。 - Hans
2
Lieven说得对:重命名方法是查找所有用途的最简单方法。不幸的是,您必须依次重命名所有用途才能找到下一个用途。然后再恢复更改。或者,如果方法名称足够独特,您可以使用“在文件中查找”(Delphi 7中是否存在?我当时已经使用了GExperts)或GExpert的Grep。 - dummzeuch
@Lieven 好主意。你可以把它作为一个答案。 - Tony_Henrich
4个回答

2
“在 Delphi 7 中没有 Search for Usages 的相应功能。该功能是在 XE 中首次引入的。”
“即使是 Find References 功能直到 Delphi 2005(当Delphi切换到Galileo IDE时)才被引入。”

1

有一种替代方法可以查找调用者:

使用可以显示调用堆栈的调试器(如MadExcept),并在您的函数中制造一个“假”异常,例如:

function WhereDoYouCallMe;
  begin
    raise Exception.Create('Called');
    ...
    ...
  end;

现在每次调用函数时,您将获得一个错误框,您可以查看堆栈并获取其调用位置。您可以继续程序,或者设置断点等操作。

这是完全不足以替代的选择,因为它执行的是动态分析而非静态分析。静态工具的整个重点在于找到所有可能的调用路径。 - David Heffernan

1
你也可以将方法标记为“已弃用”,这样你就会在编译器警告中得到一份使用列表。

0

不算理想,但你可以选择以下方法:

  • 重命名该方法
  • 编译
  • 检查编译器错误以查找所有调用者(那些在编译时可以解决的)

dummzeug所述

重命名该方法是查找所有用法的最简单方法。不幸的是,你必须依次重命名所有用法才能找到下一个用法。然后再撤消更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接