我怎样才能确定谁叫了Showme程序?
procedure Showme(str:string);
begin
ShowMessage(str);
end;
procedure btnclick(sender:TObject);
begin
Showme("test");
end;
procedure btn2click(sender:TObject);
begin
Showme("test");
end;
Run Code Online (Sandbox Code Playgroud)
编辑:困惑
Showme(654, '654'); // procedure name, string
Showme(654, '564');
Run Code Online (Sandbox Code Playgroud)
一个过程没有内置的方法来知道哪个过程调用它.如果您真的需要知道,可以使用堆栈跟踪,但实际上只需要调试那种数据.对于实际执行,重要的是传递给例程的数据,而不是传递给它的地方.这是结构化编程的基本原则之一.如果两个不同的例程使用相同的数据调用相同的过程,则应将它们视为相同.
你究竟在做什么,你需要能够分辨出什么?可能有一种更简单的方法来实现它.
为什么不传递一个不同的常量甚至是调用它作为Showme参数的过程的名称?可以分析堆栈以确定调用函数的名称,但它要复杂得多,您需要添加有关链接的信息(映射文件).Jedi的JCL有一些功能可以帮助你,但我会使用一个额外的参数.
归档时间: |
|
查看次数: |
3697 次 |
最近记录: |