如何在方法的參數列傳入方法指標 |
答題得分者是:rexchiu
|
rachex2000
一般會員 發表:21 回覆:32 積分:20 註冊:2003-04-28 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 請問如何給方法傳入方法指標? 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 發送簡訊給我 |
但若是這樣寫會有問題,應如何改進?
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 發送簡訊給我 |
引言:引言: 請問如何給方法傳入方法指標? 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 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |