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

return -1,0语句

尚未結案
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-04 21:38:25 IP:218.65.xxx.xxx 未訂閱
我在看vc语言,想将其中比较好的程式转换为delphi格式,可是限于水平,恳请各位前辈指教。 在VC中  
 int labeling(byte *image_in,byte *image_out,int *cnt)//function labeling(var image_in,image_out:Tbitmap,cnt:?):integer;
{
int label;
label=l_Base;
for (j=0;j
研二的女生
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-05 01:47:31 IP:61.62.xxx.xxx 未訂閱
在 C 裡面的 return 不僅是傳回值,也是結束這個函式的意思 而在 Delphi 裡,result 僅僅只是指傳回值而已 所以一行的 return -1/0; 要改成二行:
result := -1;
exit;
int *cnt 在這裡是傳址呼叫(Call by Address) 所以,*cnt=label-L_Base; 這一段的目的 只是要讓函式可以得到傳回值而已 相當於在 Delphi 裡,呼叫的參數宣告成 var cnt: integer; 至於那個 return 0 or -1 的目的 只是為了知道這個函式有沒有 執行成功 我覺得,去了解程式在做什麼比單純的翻譯會更好
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-05 09:11:56 IP:218.65.xxx.xxx 未訂閱
reptile,谢谢您,您的解释让我受益非浅,可是我还是有些地方不明白  
int labeling(byte *image_in,byte *image_out,int *cnt)应该是一个function():integer;
那它的返回值应该就是0,或者-1了是吧! 
if(..)
{return -1; label  } 如果改成result:=-1;exit;//跳出条件,那下面的label:=label 1;就不能执行了呀?     
研二的女生 發表人 - 小丫123 於 2005/04/05 09:14:29
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-05 10:57:47 IP:61.62.xxx.xxx 未訂閱
引言:
int labeling(byte *image_in,byte *image_out,int *cnt)应该是一个function():integer;
那它的返回值应该就是0,或者-1了是吧! 
對,它的返回值不是 0 就是 -1 不過,它的幾個參數,image_in、imageout、cnt 都可以改變 也就是說,這裡以 cnt 為例,呼叫前跟呼叫後,會得到不同的值 也就是我先前所說 Call by address 的例子
引言:
if(..)
{return -1; label  } 如果改成result:=-1;exit;//跳出条件,那下面的label:=label 1;就不能执行了呀?
是的,return -1; 就跳出去了,後面的 label ; 就不做了 我也不曉得為什麼後頭還要加個 label ;
系統時間:2024-11-24 19:18:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!