大悟还俗

邮箱 key_ok@qq.com 我的收集 http://pan.baidu.com/share/home?uk=1177427271
posts - 236, comments - 8, trackbacks - 0, articles - 0
  新随笔  :: 联系 :: 订阅 订阅  :: 管理

根据字符串找到函数并执行

Posted on 2013-11-18 10:22 大悟还俗 阅读(...) 评论(...) 编辑 收藏
关键字:MethodAddress:取得方法的地址,这个方法需要是published的。
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TShowInfo = procedure(info:string) of object;    //声明一个procedure类型,参数和ShowInfo一致

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

  published
    procedure ShowInfo(info:string);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.ShowInfo(info: string);
begin
  ShowMessage(info);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s:TShowInfo;
begin
  @s := MethodAddress('ShowInfo');       //取得ShowInfo的地址
  if @s <> nil then                      //如果不为空
  begin
    s('中华人民共和国');                 //执行
  end;
end;

end.
View Code