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

1:PROCEDURE內含FUNCTION及PROCEDURE是做什麼?

尚未結案
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-10 13:09:35 IP:203.133.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-10 13:44:36 IP:147.8.xxx.xxx 未訂閱
They are local procedure/function. In your case, procedure/function A,B & C can be only used within procedure AA.
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-10 13:47:00 IP:203.95.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-11 02:40:26 IP:61.66.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-11 09:17:44 IP:61.30.xxx.xxx 未訂閱
你好: 在此也發表一下我的看法,如有誤也請各位前輩不吝指正,謝謝
系統時間:2024-05-20 8:25:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!