比如我一个类中有一个方法function abc():string;现在我想从外部TXT中读一个字串变量,通过这个变量来得到abc这个方法.
不要用if 字串=abc then
        do abc方法因为我N多方法名,如果取回某个字串都得IF一下,哪我要写上千行IF代码..

解决方案 »

  1.   

      指针啊  ...     放到INI文件里读取也行啊....
      

  2.   

    这个对应关系就是要现在进行邦定,比如我通过字串abc找到了abc方法,然后再调用这个方法.
    如果是用IF 字串=abc then这样允余的代码,哪太费时了.有没有什么方法,可以FindMethod('字串')返回的是一个函数指针....
      

  3.   

    通过方法名字符串去调用该方法, 如果该方法是位于published段,可以实现。   
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }  public
        { Public declarations }
      published
        procedure SayHello();
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SayHello;
    begin
      ShowMessage('Hello Word!');
    end;procedure TForm1.btn1Click(Sender: TObject);
    var
        AMethod:TMethod;
        Proc:Procedure   of   object;
    begin
        AMethod.Code:=self.MethodAddress('SayHello');
        AMethod.Data:=self;
        TMethod(Proc):=AMethod;
        Proc;
    end;
    end.
      

  4.   

    var
    a:Pointer;
    s:string;
    begin
    s:='abc';
    a:=MethodAddress(s); //根据方法名获取其地址
    CallWindowProc(a,Handle,0,0,0);//执行方法不过方法必须要在pushlished下
      

  5.   

    使用运行时类信息 RTTI 函数集可以用名字找到任何类的任何方法与属性如:GetPropInfo
      

  6.   

    PUBLISHED太有限了,今天看了下RTTI,但还不会用..还抓不到类中的方法......哎
      

  7.   

    目前还是用Published吧,最主要现在的问题是没有通用统一的动态调用的方法(不过听说D2008有了),得借助于方法指针。或者你可以尝试通过汇编来解决吧(最主要解决参数设置的问题)。