線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:764
推到 Plurk!
推到 Facebook!

呼叫函式返回的問題

尚未結案
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-14 18:36:43 IP:203.73.xxx.xxx 未訂閱
我的程式如下    主程式 //------------------------------------------------- . . . 呼叫函式1 . //-------------------------------------------------    函式1 //------------------------------------------------- . . 呼叫函式2 . . //-------------------------------------------------    函式2 //------------------------------------------------- . . . //------------------------------------------------- 照理函式2執行完會返回函式1, 函式1執行完再返回主程式 請問一下: 有辦法函式2執行完就直接返回主程式嗎? 謝謝!!
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-15 03:46:10 IP:61.59.xxx.xxx 未訂閱
那你在函式一呼叫函式二完了之後就加上 return; 就好了吧....
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-15 12:27:55 IP:203.73.xxx.xxx 未訂閱
引言: 那你在函式一呼叫函式二完了之後就加上 return; 就好了吧....
bass15您好: 謝謝您的回答< > 如果用這個方法,他還是會先回函式一在跳回主程式 我是想知道有沒有直接跳回主程式的方法(不需在經過函式一) 謝謝!!< >
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-15 12:34:29 IP:211.76.xxx.xxx 未訂閱
phorn 您好: 誠如您所說的,理論上還是會返回函式1,否則stack應該會錯亂掉。 建議是不是由函式2傳回一個值,函式1再根據此值判斷:要不要立即返回主程式或讓函式1繼續往下執行。 供您參考! RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-15 20:17:32 IP:211.74.xxx.xxx 未訂閱
richtop您好:    因為我的程式,在函式2執行完後,函式1已經沒有再執行下去的需要了 所以我想說BCB有沒有什麼指令能直接跳回主程式,這樣一來比較能節省 程式執行的時間< >,謝謝您的回答!!< >
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-16 08:34:58 IP:203.70.xxx.xxx 未訂閱
phorn您好 既然這樣,乾脆改成主程式呼叫函式1後,再呼叫函式2如何? 也就是函式1不呼叫函式2了...    參考看看 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-16 09:52:24 IP:219.84.xxx.xxx 未訂閱
....把涵式2搬到涵式1裡面阿...就剩一個涵式
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-16 11:15:35 IP:203.70.xxx.xxx 未訂閱
Delphi k.Top的大大都好熱心喔....< >... 真是感動ㄋㄟ...< > 真不好意思< >我之前舉的例子可能讓大大們有些誤解< >, 我再說清楚一點方便大大們?我,我的主程式經過判斷後會呼叫函式1 函式1裡有一條件式,條件式=false的話就再呼叫自己(函式1), 一直重複,直到條件式=true,程式大致上如下,麻煩各位大大囉!!
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-16 13:32:27 IP:61.66.xxx.xxx 未訂閱
那你用主程式來呼叫就好了...涵式一不要CALL自己....修改一下..  
bool A=false;
//主程式-------------------------------------------
for(int i=0;i<10;i  )
{
.
.
while(A==false) 呼叫函式1;
.
.
}
//-------------------------------------------------
//函式1--------------------------------------------
{      .
  .
  .
     }
//-------------------------------------------------
 
發表人 - bass15 於 2004/08/16 13:36:04
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-16 16:04:44 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    看了您的說明,原來您要作的是遞廻呼叫。 不過只要是函式呼叫,都必須返回原呼叫函數中,不可能跳過這個該呼叫函式的。 例如:fun()中呼叫fun1(),當fun1()執行完,一定要返回fun(),不可能跳過fun()的。 而您要執行的是遞迴呼叫,所以有一個方法提供參考: 利用一個全域變數來指示所有的函式1版本,可以結束了。 希望在函式1中有地方可以修改gFlag的值,決定不再執行函式1了。 並將此程式碼寫在函式1中,呼叫自己函式1的下一行。但果真如您所舉例的例子一樣,那就會恨快的返回了,因為底下沒有程式碼了。 <>> < class="code">//函式1-------------------------------------------- { . gFlag = true; . if(A==false) 呼叫函式1; if ( gFlag==true ) return; //利用變數gFlag來強迫函式1結束返回。 .... //其它的指令碼.... .... return; } //------------------------------------------------- RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-08-17 07:57:33 IP:211.74.xxx.xxx 未訂閱
richtop您好: 我的程式A==true函式1就結束返回了ㄚ 應該不用再設了吧!! 謝謝!!
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-08-17 18:35:49 IP:211.76.xxx.xxx 未訂閱
phorn 您說的一點也沒錯! 我在上一段其實也講了,但可能是詞不達意,您沒看出來!
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-08-17 21:37:54 IP:211.74.xxx.xxx 未訂閱
看來是沒有那種指令囉...< > 只好用別的方法來達成啦< > 不過這裡大大回答熱烈且親切真讓人感動說< > 謝謝啦!!< >
gwanlin
一般會員


發表:1
回覆:29
積分:6
註冊:2002-07-30

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-08-28 10:29:40 IP:61.222.xxx.xxx 未訂閱
用goto就可以了,不過我覺得你的情況並不是只有這個方法,通常如果不是逼不得已,最好少用goto........ 我是gwanlin
------
我是gwanlin
willis
一般會員


發表:9
回覆:11
積分:4
註冊:2002-09-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-08-28 14:24:14 IP:61.218.xxx.xxx 未訂閱
我覺得你將程式碼貼上來,如果不便公開弄一個簡易的表達方式提供其他人幫你解決
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-08-28 21:33:11 IP:203.70.xxx.xxx 未訂閱
gwanlin、willis 您好:    謝謝兩位大大的回覆,此問題在下已經獲得解決了 可是 >
系統時間:2024-06-22 18:49:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!