如果要做一個function裡面再帶一個function有可能嗎? |
尚未結案
|
bigpipi999
一般會員 發表:4 回覆:4 積分:1 註冊:2004-08-04 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 由於使用別人做的DLL來執行相關FUNCTION後會取得一個值 而我會將這值ASSIGN給某一個OBJECT 但因為OBJECT也是透由另外一隻程式傳入的 因此想要用一個FUNCTION來指定傳入的OBJECT及DLL的FUNCTION 也就是在FUNCTION裡的其中一個參數指定為FUNCTION 請問是否有可能這樣去做呢? 或者有其他更好的方法可以完成? Function MyFun1(...): [return type] Function MyFun2(..):[return type] begin .... end; var .... begin .... end; |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
可以ㄚ
你必須先定義function的型態(如果該function 為 class member 請記的在後面加of object)
例如
Type TMyFuncType= function(P1:Integer;P2:Integer):Integer; procedure Myfunc(aObj:TObject;aFunc:TMyFuncType;); var i,j,k:integer; begin ... i := aFunc(j,k); end;混心雜欲 棄修身~唉
------
唉~ |
bigpipi999
一般會員 發表:4 回覆:4 積分:1 註冊:2004-08-04 發送簡訊給我 |
我可能說的不夠清楚~~抱歉..我的問題大概像下面這樣
有個CallBack Function,宣告在Libry.pas的單元內 T_Call_Proc = procedure(P: Pointer; Y: Integer); stdcall;
:
:
procedure My_Call(Param: Integer; Proc: T_Call_Proc); stdcall; 主程式include Libry.pas進來後程式大致如下 procedure RefreshCall(p: Pointer; Y: Integer); stdcall;
var
......
begin
with MyForm.Image1.Picture.Bitmap do begin
W_Bits:=Width*3; pS:=pIMG;
for H:=0 to Height-1 do begin
......
end;
MyForm.Image1.Refresh;
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
MyImageA:=TImage.Create(Nil);
....
My_Call(0,RefreshCall);
end procedure TForm1.Button1Click(Sender: TObject);
begin
MyImageB:=TImage.Create(Nil);
....
My_Call(0,RefreshCall);
end 我遇到的情況是可能不同的按鈕按下會產生不能的TImage物件
且影像大小,放的位置皆不同
我想把這個TImage的物件傳進RefreshCall裡
但因為這個RefreshCall宣告為CallBack function
帶入的參數跟傳回值我必須要一樣不能變更
且該DLL我沒法子重改~
這樣我不太清楚如何才有法子
把我想要的物件塞進去~
請各位高手幫幫忙囉~~~
|
bigpipi999
一般會員 發表:4 回覆:4 積分:1 註冊:2004-08-04 發送簡訊給我 |
修正一下是下面這樣
不同的Button會建不同的TImage
procedure TForm1.Button1Click(Sender: TObject);
begin
MyImageA:=TImage.Create(Nil);
....
My_Call(0,RefreshCall);
end procedure TForm1.Button2Click(Sender: TObject);
begin
MyImageB:=TImage.Create(Nil);
....
My_Call(0,RefreshCall);
end
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 修正一下是下面這樣 不同的Button會建不同的TImage procedure TForm1.Button1Click(Sender: TObject); begin MyImageA:=TImage.Create(Nil); .... My_Call(0,RefreshCall); end procedure TForm1.Button2Click(Sender: TObject); begin MyImageB:=TImage.Create(Nil); .... My_Call(0,RefreshCall); endDLL 函數不建議傳物件啦 你可以試試 1.寫兩組RefreshCall函數,RefreshCall1處理MyImageA,RefreshCall2處理MyImageB 2.設定一個FCurrImage:TImage成員 RefreshCall中對FCurrImage作處理 Button1/Button2 在呼叫My_Call時前先設定FCurrImage eg. procedure TForm1.Button2Click(Sender: TObject); begin MyImageB:=TImage.Create(Nil); .... FCurrImage := MyImageB; My_Call(0,RefreshCall); end混心雜欲 棄修身~唉
------
唉~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |