全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:915
推到 Plurk!
推到 Facebook!

如何在方法的參數列傳入方法指標

答題得分者是:rexchiu
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-31 12:39:07 IP:219.84.xxx.xxx 未訂閱
請問如何給方法傳入方法指標? function A(i: integer): integer; function B(i: integer): integer; function C(傳入方法指標,可接受任一型態方法,或至少如A, B同一型態的方法): integer; begin //利用傳入的方法做計算 end;
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-31 12:49:08 IP:210.243.xxx.xxx 未訂閱
引言: 請問如何給方法傳入方法指標? function A(i: integer): integer; function B(i: integer): integer; function C(傳入方法指標,可接受任一型態方法,或至少如A, B同一型態的方法): integer; begin //利用傳入的方法做計算 end;
Function A(i: Integer): Integer;
begin
  Result := i   100;
end;    Function B(i: Integer): Integer;
begin
  Result := i   1;
end;    type fp = Function(i: Integer): Integer;
Function C(pf: fp): Integer;
begin
  Result := pf(10000);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;    begin
  i := C(@A);
  ShowMessage(IntToStr(i));
  i := C(@B);
  ShowMessage(IntToStr(i));
end;
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-31 14:34:32 IP:219.84.xxx.xxx 未訂閱
但若是這樣寫會有問題,應如何改進?    
 type
  fp = Function(i: Integer): Integer;      TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Function A(i: Integer): Integer;
    Function B(i: Integer): Integer;
    Function C(pf: fp): Integer;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function TForm1.A(i: Integer): Integer;
begin
  Result := i   100;
end;    function TForm1.B(i: Integer): Integer;
begin
  Result := i   1;
end;    function TForm1.C(pf: fp): Integer;
begin
  Result := pf(10000);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i := C(@A);
  ShowMessage(IntToStr(i));
  i := C(@B);
  ShowMessage(IntToStr(i));
end;
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-31 14:37:03 IP:219.84.xxx.xxx 未訂閱
引言:
引言: 請問如何給方法傳入方法指標? function A(i: integer): integer; function B(i: integer): integer; function C(傳入方法指標,可接受任一型態方法,或至少如A, B同一型態的方法): integer; begin //利用傳入的方法做計算 end;
Function A(i: Integer): Integer;
begin
  Result := i   100;
end;    Function B(i: Integer): Integer;
begin
  Result := i   1;
end;    type fp = Function(i: Integer): Integer;
Function C(pf: fp): Integer;
begin
  Result := pf(10000);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;    begin
  i := C(@A);
  ShowMessage(IntToStr(i));
  i := C(@B);
  ShowMessage(IntToStr(i));
end;
rexchiu
中階會員


發表:14
回覆:88
積分:70
註冊:2002-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-31 16:40:29 IP:220.130.xxx.xxx 未訂閱
 
type
  //fp = Function(i: Integer): Integer;
  fp=function(i:integer):integer of object;      TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Function A(i: Integer): Integer;
    Function B(i: Integer): Integer;
    Function C(pf: fp): Integer;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function TForm1.A(i: Integer): Integer;
begin
  Result := i   100;
end;    function TForm1.B(i: Integer): Integer;
begin
  Result := i   1;
end;    function TForm1.C(pf: fp): Integer;
begin
  Result := pf(10000);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  //i := C(@A);
  i:=C(A);
  ShowMessage(IntToStr(i));
  //i := C(@B);
  i:=C(B);
  ShowMessage(IntToStr(i));
end;    
Best Regards, Rex Chiu
------
Best Regards,
Rex Chiu
系統時間:2024-05-21 23:34:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!