インターネットで検索するとメソッドアドレス取り出し方法として
MethodAddress が利用できる山本さんやStackOverflowなどで
紹介されていたので実際に試してみました。
// サンプルソース抜粋
function TForm9.MethodFromName(const Name: string): TNotifyEvent;
begin
TMethod(Result).Data := Self;
TMethod(Result).Code := Self.MethodAddress(Name);
if TMethod(Result).Code=nil then
Memo1.Lines.Add('Not find ' + Name )
else
Memo1.Lines.Add('Find ' + Name );
end;
結果、メソッドが定義されている場所が private や public だと駄目でした。
なぜ駄目かは?
|