怎样得到程序执行时“所在的方法”的名称(100分)

  • 主题发起人 主题发起人 96sd2
  • 开始时间 开始时间
9

96sd2

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样得到程序执行时“所在的方法”的名称,如:
procedure TForm1.FormCreate(Sender: TObject);
var
methodName: String;
begin
methodName := ......;
end;
在上面的程序中,我希望变量methodName的值是当前所在的方法名:TForm1.FormCreate
 
在oncreate里给个全局字符串变量,执行ONCREATE方法时给它个值"TForm1.FormCreate",methodName := 那个变量不就行了?
 
我是希望写个通用方法,得到程序当前执行的方法名称,记录到日志中,方便调试
 
看看调试的callstack,这东西只有编译器才知道
 
比较笨的办法就是把需要记录的方法, 申明为方法类型. 然后, 写通用过程.

like:
type
Tps = procedure of object;
procedure PerfromSomething(var a: tps);
var
s: string;
begin
s:= methodName(@a);
// write Log;
a;
end;
 
谢谢duhai_lee的提示,不过这种方法对于通用的情况不太可行,需要修改的太多了,在这个方案方面java支持的很好,不知delphi有没有合适的解决方法
 
方法带的参数不同,就得申明不同的方法类型.

应该有更好的方法吧..
 
我没听懂你说什么来的
 
另外, 用消息的方法应该可以做到, 每个方法执行都触发消息. 自定义的方法同样自定义消息.

不过好像还是不够好...
 
如果你知道java中如何处理的话,你可以把java中的处理方式"移植" 过来实现. 借鉴它的思想. (我偷偷这样想..)
 
呵呵 看来不是不需要深入研究一下delphi的代码
 
过程和函数好象都有地址
 
后退
顶部