@演算子を使用して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.
そして、これはIDEのスクリーンショットの例です
ご覧のlocal variables
ように、decodeprocedure がどのTFooClass.Bar
メソッドを指しているかがウィンドウに表示されます。
更新Self
式をウォッチリストに
追加して、同じ結果を取得することもできます