如何显示变量指向哪个方法指针?

Maw*_*awg 2 delphi

我已经死了

type  TProcedure = procedure(const messageText : String) of object;
Run Code Online (Sandbox Code Playgroud)

然后有一个decodeProcedure : TProcedure; 在不同地方分配的那种类型的变量.

当我在一个breakpint停止时,我怎么能看到变量指向哪个程序?

如果我Debug/evaluateadd watch我收到错误E2035 Not enough actual parameters

(德尔福XE 2)

RRU*_*RUZ 5

您可以使用@运算符评估decodeProcedure方法的地址,并将该表达式添加到监视列表窗口,以查看可以使用该local variables窗口的过程点.

试试这段代码

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  TProcedure = procedure(const messageText : String) of object;
  TFooClass = class
     decodeProcedure  : TProcedure;
   public
     procedure Bar(const messageText : String);
     procedure DoIt;
  end;

Var
  F : TFooClass;
{ TFooClass }

procedure TFooClass.Bar(const messageText: String);
begin
  Writeln(messageText);
end;

procedure TFooClass.DoIt;
begin
  if Assigned(decodeProcedure) then //put a break point here
   decodeProcedure('Hello');
end;

begin
  try
     F:=TFooClass.Create;
     try
       F.decodeProcedure:=F.Bar;
       F.DoIt;
     finally
      F.Free;
     end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

这是一个示例IDE屏幕截图

在此输入图像描述

如您所见,local variables窗口显示了decodeprocedure指向该TFooClass.Bar方法的内容.

更新 您还可以将Self表达式添加到监视列表以获得相同的结果

在此输入图像描述

  • 我只检查[delphi xe2的特征矩阵](http://edn.embarcadero.com/article/images/41563/Delphi_XE2_Feature_Matrix.pdf),并且"可扩展的局部变量视图"在初学者版中不可用:( (2认同)