如何將此段code變為一個函數 |
尚未結案
|
grant77
一般會員 發表:3 回覆:5 積分:1 註冊:2004-05-28 發送簡訊給我 |
由於要縮短程式..要把以下這一段改成函數
供加.減.乘.除按鈕的程式碼變為一個函數就可....
以下為程式碼
.......................................................
switch (op) {
case Nul:
tot = tmp;
break;
case Add:
tot = tmp;
break;
case Sub:
tot -= tmp;
break;
case Mul:
tot *= tmp;
break;
case Div:
tot /= tmp;
break;
case Ans:
tot = tot;
break;
}
dot = false;
Label1->Caption = tot;
tmp = 0.0;
tstr = "";
op = Add;
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
你先去Unit1.h的private:底下加入這行
void __fastcall myFunction(); // 函數名稱自訂,你自己決定是否要有參數
再去Unit1.cpp加入這個
void __fastcall TForm1::myFunction() { switch (op) { case Nul: tot = tmp; break; case Add: tot = tmp; break; case Sub: tot -= tmp; break; case Mul: tot *= tmp; break; case Div: tot /= tmp; break; case Ans: tot = tot; break; } dot = false; Label1->Caption = tot; tmp = 0.0; tstr = ""; op = Add; }這樣應該就可以了吧~ 祝順利
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
grant77
一般會員 發表:3 回覆:5 積分:1 註冊:2004-05-28 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 你先去Unit1.h的private:底下加入這行 void __fastcall myFunction(); // 函數名稱自訂,你自己決定是否要有參數 再去Unit1.cpp加入這個chtai您好: 有可能被外部函數呼叫的函數寫在public 才對喔。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖void __fastcall TForm1::myFunction() { switch (op) { case Nul: tot = tmp; break; case Add: tot = tmp; break; case Sub: tot -= tmp; break; case Mul: tot *= tmp; break; case Div: tot /= tmp; break; case Ans: tot = tot; break; } dot = false; Label1->Caption = tot; tmp = 0.0; tstr = ""; op = Add; }這樣應該就可以了吧~ 祝順利 |
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
感謝anpino兄指正 :p
的確會被外部呼叫的應該要寫在public才對.
可是我有問題,
若是只有自己在叫呢? (例如就只有一個Form,就只有Form上的元件會叫到)
是不是寫在private也行呢? 還是我搞錯了?
grant77您好 您是否考慮多po出一些資訊呢? 不然大家也不知道你的op,tot之類的是啥型態 也不知那是全域還是啥的,似乎比較難幫上忙哩:) 另,不好意思,小弟不是很明白您所謂的 "把op = Add;這裡改為變數阿..讓呼叫函數可以叫出Add.Sub.Mul.Div.Ans" 是什麼意思哩 ~~^^a -- 我也還在學習階段,如有錯誤懇請指正 :p 發表人 - chtai 於 2004/05/31 13:20:29
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 感謝anpino兄指正 :p 的確會被外部呼叫的應該要寫在public才對. 可是我有問題, 若是只有自己在叫呢? (例如就只有一個Form,就只有Form上的元件會叫到) 是不是寫在private也行呢? 還是我搞錯了?若是只有自己在叫, 寫在private也行。 物件本身可以呼叫private,protected,public 任一變數與函數。 class中的private,protected,public並不會限制本身的呼叫, 而是用來限制其他外部物件(包含一般function,friend function 與 inherited class)的呼叫。 (這個是另外一個問題, 依照版規, 必須另外發表提問喔。) <>< face="Verdana, Arial, Helvetica">引言: grant77您好 您是否考慮多po出一些資訊呢? 不然大家也不知道你的op,tot之類的是啥型態 也不知那是全域還是啥的,似乎比較難幫上忙哩:) 另,不好意思,小弟不是很明白您所謂的 "把op = Add;這裡改為變數阿..讓呼叫函數可以叫出Add.Sub.Mul.Div.Ans" 是什麼意思哩 ~~^^a 他的意思是說: 你的函式應該變成有一個int參數, 這個參數可以指定Add.Sub.Mul.Div.Ans任一個。 為什麼是int ? 因為 Add.Sub.Mul.Div.Ans 明顯應該是各自以 #define 或enum 去定義一個數值。 既然已經將判斷變數一出去了, 那麼chtai您的function最後一行的op = Add;就可以砍掉啦~~ ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖 |
grant77
一般會員 發表:3 回覆:5 積分:1 註冊:2004-05-28 發送簡訊給我 |
感謝chtai.anpino的回應:
我的問題是:那些程式碼是要做加減乘除用的..我po的程式是加法.也就是
op=Add..其他.如做減法運算的按鈕.就把那段程式碼中的op改為op=Sub,以此類推.... 現在我想做各函數放在前面.讓按鈕內容簡單化.也就是在每各按鈕只要輸入一各函數就可以執行.讓函數帶入加法.減法..變數.可以執行. 我的問題很簡單啦..可能是我表達的不夠清楚..^^A..之前chtai兄改的是可以了.可以讓我在加法按鈕的程式碼只用"myFunction();"就可以叫出加法.但我不知道如何去改變數.就是我上次po的.讓函數帶入sub.mul.div做減乘除運算.
我的程式碼前面有定義#difine Add 1
#difine Sub 2
#difine Mul 3
#difine Div 4
#difine Ans 5 (初學者.請多多指教...^^)
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
grant77您好: 只要將chtai給你的function稍做更改就可以囉~~ void __fastcall TForm1::myFunction(const int op) { switch (op) { case Nul: tot = tmp; break; case Add: tot = tmp; break; case Sub: tot -= tmp; break; case Mul: tot *= tmp; break; case Div: tot /= tmp; break; case Ans: tot = tot; break; } dot = false; Label1->Caption = tot; tmp = 0.0; tstr = ""; //op = Add;//這行刪掉 }呼叫方式 example : myFunction(Mul); ps.別忘了結案, 給chtai鼓勵鼓勵喔~~ ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- 發表人 - anpino 於 2004/06/01 08:23:37 |
grant77
一般會員 發表:3 回覆:5 積分:1 註冊:2004-05-28 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 我剛剛試了又不行耶..會顯示錯誤訊息 [C Error] Unit1.cpp(36): E2316 '_fastcall TForm1::myFunction(const int)' is not a member of 'TForm1' 我不知該如何解決..請再幫幫忙..謝謝檢查你的Unit.h, 原來void myFunction()要改成 void myFunction(const int)喔~~ ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- 發表人 - anpino 於 2004/06/02 08:21:46 |
grant77
一般會員 發表:3 回覆:5 積分:1 註冊:2004-05-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |