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

如何將此段code變為一個函數

尚未結案
grant77
一般會員


發表:3
回覆:5
積分:1
註冊:2004-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-30 02:42:53 IP:218.170.xxx.xxx 未訂閱
由於要縮短程式..要把以下這一段改成函數 供加.減.乘.除按鈕的程式碼變為一個函數就可.... 以下為程式碼 ....................................................... 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-30 03:17:41 IP:140.113.xxx.xxx 未訂閱
你先去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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-31 00:26:31 IP:218.162.xxx.xxx 未訂閱
謝謝您的大力幫忙..不過還有各小問題..就是如何設參數阿. 我想把op = Add;這裡改為變數阿..讓呼叫函數可以叫出Add.Sub.Mul.Div.Ans. 不知該如何改..謝謝
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-31 09:07:36 IP:211.23.xxx.xxx 未訂閱
引言: 你先去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;
}
這樣應該就可以了吧~ 祝順利
chtai您好: 有可能被外部函數呼叫的函數寫在public 才對喔。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-31 13:18:02 IP:140.113.xxx.xxx 未訂閱
感謝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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-31 16:19:24 IP:211.23.xxx.xxx 未訂閱
引言: 感謝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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-01 07:18:30 IP:218.162.xxx.xxx 未訂閱
感謝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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-01 08:18:25 IP:211.23.xxx.xxx 未訂閱
 
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-02 03:59:13 IP:218.162.xxx.xxx 未訂閱
我剛剛試了又不行耶..會顯示錯誤訊息 [C Error] Unit1.cpp(36): E2316 '_fastcall TForm1::myFunction(const int)' is not a member of 'TForm1' 我不知該如何解決..請再幫幫忙..謝謝
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-02 08:19:06 IP:211.23.xxx.xxx 未訂閱
引言: 我剛剛試了又不行耶..會顯示錯誤訊息 [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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-06-03 21:33:37 IP:218.172.xxx.xxx 未訂閱
感謝chtai.anpino兄的指教.我的問題已解決..謝謝..
系統時間:2024-06-29 17:14:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!