1:PROCEDURE內含FUNCTION及PROCEDURE是做什麼? |
尚未結案
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
1:PROCEDURE內含FUNCTION及PROCEDURE是做什麼?
2:functionB(sCUSTMER:string;var sSERFMNO:string;sNETNO,sSTREETID,sBUILDID:string):boolean;
只有在此PROCEDURE AA處理為什麼要再傳址及傳值(sCUSTMER:string;var sSERFMNO:string;sNETNO,sSTREETID,sBUILDID:string) ..? procedure AA(Sender: TObject);
var cdTemp:TClientDataSet;
function A(sCUSTMER:string;nSALEITM:double):boolean;
begin
XXX;
XXX;
END; function B(sCUSTMER:string;var sSERFMNO:string;sNETNO,sSTREETID,sBUILDID:string):boolean;
var //n:double;
s,sCPAYTP:string;
begin
XXX;
XXX;
END; procedure C(sSERFMNO:string);
var s:string;
n:double;
begin
XXX;
XXX;
END;
BEGIN
XX
XX
END;
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 在 procedure 或是 function 中再宣告 procedure 或是 function 的目的只是 '子' procedure 或 function 是在該 '母' procedure 或 function 內專用的, 其 scope 只有在該 '母' procedure 或 function 裡.
目的呢, 只是為了使用上的整理上的方便, 若是將一些只有在某一 procedure 中會用的 procedure 寫到全域來的話, 會造成維護上的負擔. 不過也不是一定, 看個人寫作的風格啦. 另外是不是要使用 var (傳址) 的方式來當作參數, 純綷是該 procedure 或是 procedure 的需要, 和是不是 local 的 procedure 或 functoin 是沒有關係的. 若是希望在 procedure 中能異動傳入的變數的話, 就必須使用 var 的參數傳法!!
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 1:PROCEDURE內含FUNCTION及PROCEDURE是做什麼? 2:functionB(sCUSTMER:string;var sSERFMNO:string;sNETNO,sSTREETID,sBUILDID:string):boolean; 只有在此PROCEDURE AA處理為什麼要再傳址及傳值(sCUSTMER:string;var sSERFMNO:string;sNETNO,sSTREETID,sBUILDID:string) ..? procedure AA(Sender: TObject); var cdTemp:TClientDataSet; function A(sCUSTMER:string;nSALEITM:double):boolean; begin XXX; XXX; END;我補充一點自己的看法 procedure 中有procedure 是可以重覆使用同一個procedure name 舉例來說 procedure Tform1.Procedure1; function myFunction(A:integer; b:string): integer; begin ... end; begin ... end; procedure Tform1.Procedure2; function myFunction(A,B:integer; c:boolean): string; begin ... end; begin ... end;可以看到, 不同procedure 用同一個myFunction name, 因為是local的, 所以不相干, 如果 procedure1, procedure 要用到兩種function, 而不 這樣定義的話, 那就要在這裡定義兩支 {private} function myFunction1(A:integer; b:string): integer; function myFunction2(A,B:integer; c:boolean): string; 然後實作定義 Function Tform1.myFunction1(A:integer; B:string): integer; begin end; Funtion Tform1.myFunction2(A,B:integer; c:boolean): string; begin end; 是不是比較麻煩, 而且在閱讀上並不清楚, 特別是程式碼一多, 要找 相關寫作更是討厭! |
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |