举例来说,如何用方法B的地址替换成方法A的地址,从而达到调用方法A,实际上是调用方法B

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TMethod = procedure of Object;  TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        m_Method : TMethod;
        procedure Msg1;
        procedure Msg2;
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.Msg1;
    begin
      ShowMessage('Msg1');
    end;procedure TForm1.Msg2;
    begin
      ShowMessage('Msg2');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      m_Method := Msg1;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      m_Method := Msg1;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      m_Method := Msg2;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      m_Method;
    end;end.
      

  2.   

    sxy_9761() 的办法,基本是这样,如果是需要参数,而且参数类型一样,参数个数一样,那都简单,
    如果是参数有不同,则复杂一点
      

  3.   

    用指针
    Tproc = procedure;
    p: Pointer;procedure proc1;
    procedure proc2;p := @proc1;
    Tproc(p);
    p := @proc2;
    Tproc(p);
      

  4.   

    其实我想实现的是一个类里所有函数都指向同一个函数,比如下面这个类,
    Button1Click,Button2Click,Button3Click,SetSome,SetSome我都想让他们指向Gen
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
        procedure Gen;
      public
        procedure SetSome(A:integer;S:string);
        function GetSome(s:tclass;name:integer):TClass;
        { Public declarations }
      end;
      

  5.   

    1 用函数指针
    2 利用多态的概念
    (搜一下 多的是 注好运)---------------------------------------              欢迎访问 http://www.coderpub.com 技术论坛
                                delphi,asp.net,C#,j2me,软件工程,企业管理