函數指標的參數讀取錯誤(D7) |
缺席
|
chenyk
高階會員 發表:14 回覆:95 積分:171 註冊:2002-07-08 發送簡訊給我 |
我參考網路上的範例,練習函數指標,
程式編譯OK,但執行時, sBuf 卻沒有正確傳入函數中,請問是哪寫錯了? 從 BCB 板找到類似的解 http://ktop.no-ip.org/topic.php?TOPIC_ID=57033 __closure 他使用了 __closure 的保留字,Delphi 有嗎? 我的源碼如下: type TSampleFunc = procedure(const sBuff: string); TForm1 = class(TForm) btn_1: TButton; procedure btn_1Click(Sender: TObject); private procedure TestFunc2(const sBuff: string); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn_1Click(Sender: TObject); var sBuf: string; begin sBuf := 'Test string'; TSampleFunc( @TForm1.TestFunc2)( sBuf); end; procedure TForm1.TestFunc2(const sBuff: string); begin ShowMessage( 'this is Func2:' sBuff); end; end.
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
chenyk
高階會員 發表:14 回覆:95 積分:171 註冊:2002-07-08 發送簡訊給我 |
我從這找到解答:
http://blog.csdn.net/procedure1984/article/details/3897155 TSampleFunc = procedure( sBuff: integer); TSampleFunc( @TestFunc)( sBuf); 其中 TestFunc()不能是物件的函數,所以我的程式必須改成類似事件的用法: type TSampleFunc = procedure( sBuff: integer) of object;
TForm1 = class(TForm) btn_1: TButton; procedure btn_1Click(Sender: TObject); private FTestFunc: TSampleFunc; procedure TestFunc2( sBuff: integer); published property TestFunc: TSampleFunc read FTestFunc write FTestFunc; ... procedure TForm1.btn_1Click(Sender: TObject); var sBuf: integer; begin sBuf := 123; TestFunc := TestFunc2; TestFunc( sBuf); end; 這樣做可以正常呼叫物件裡的函數。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |