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

請問該如何用堆疊或陣列作計算機?

答題得分者是:RedSnow
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-12 00:10:39 IP:61.219.xxx.xxx 未訂閱
請問該如何用堆疊或是陣列作出可以四則運算的計算機呢? 例如 我在edit裡輸入4 2*5-6/2 我要它結果為11 我的想法是 把4 2*5-6/2這串的數字跟運算符號( ,-)分開放在不同的地方 然後如果遇到*,/ 就先做在放回去 但是我不知道該怎麼寫 請會的高手大大 指點一下 小弟感激不盡~
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-12 16:47:03 IP:61.217.xxx.xxx 未訂閱
wbs173 您好:    請參考下列這兩篇討論: 進行四則運算的新思路,各位高手們看看 http://delphi.ktop.com.tw/topic.php?topic_id=78797 DiffExpress這個控制項如何使用? http://delphi.ktop.com.tw/topic.php?topic_id=79122 如果您並不想直接用元件來處理,而是想要瞭解處理過程的話,上述討論中提及的免費元件有提供 Delphi 的原始碼,不妨參考一下。 7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-13 14:32:55 IP:61.219.xxx.xxx 未訂閱
謝謝上面那位大大的回應 但是我沒用過元件 我下載後有好多個檔案 請問該如何安裝呢?? 還麻煩會安裝元件的教導一下 感激不盡~
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-13 15:24:40 IP:59.115.xxx.xxx 未訂閱
wbs173 您好:    該元件有附著一個名為 readme.txt 的檔案,檔案內對安裝步驟有做說明:
Installation
------------    Delphi & C   Builder:      In the Delphi or C  Builder component menu, choose :      1) Install Component
 
  2) Into new package      3) Choose package filename (for example NEW_PACK.DPK)
 
  4) Browse for unit filename CalcExpress.pas      5) Choose Compile & Install
BCB 與 Delphi 的安裝步驟是相同的,只不過要將步驟 3 所註記的 .DPK 看成 .BPK 即可。 7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-13 15:41:32 IP:61.219.xxx.xxx 未訂閱
謝謝上面大大的回應 我照步驟做了 但是出現下面的訊息 不知該怎麼解決 [Linker Fatal Error] Fatal: Unable to open file 'EXTCTRLS.OBJ' 麻煩再教一下 感激不盡~
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-13 18:49:29 IP:61.219.xxx.xxx 未訂閱
我把 第3項的Choose package filename 改成CalcExpress.bpk就可以安裝了 但是我還是不知道它會出現在哪 如何使用 麻煩教導一下 感激不盡~!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-14 00:52:56 IP:59.115.xxx.xxx 未訂閱
wbs173 您好:    將元件編譯並安裝好之後,您可以在元件盤的 "Samples" 頁籤中找到該元件,拉一個元件到您的 Form 上面,然後參考下列這一篇裡的簡易範例試試看: DiffExpress這個控制項如何使用? http://delphi.ktop.com.tw/topic.php?topic_id=79122 7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-14 01:43:04 IP:61.219.xxx.xxx 未訂閱
抱歉唷 請問如果在Samples 沒出現那個元件 是否就是安裝失敗呢? 我對 Choose package filename (for example NEW_PACK.DPK) 這個步驟不是很了解 是隨便輸入一個*.bpk 都可以嗎? 但我又從事了好幾次 除非輸入CalcExpress.bpk 否則都會出現 [Linker Fatal Error] Fatal: Unable to open file 'EXTCTRLS.OBJ' 這個錯誤 真不知道為什麼~"~ 真的很抱歉 由於對安裝這個是個新手所以問題多了點 麻煩會的不吝指導 謝謝~!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-14 12:30:27 IP:59.115.xxx.xxx 未訂閱
wbs173 您好:
引言:請問如果在Samples 沒出現那個元件 是否就是安裝失敗呢? 我對 Choose package filename (for example NEW_PACK.DPK) 這個步驟不是很了解 是隨便輸入一個*.bpk 都可以嗎? 但我又從事了好幾次 除非輸入CalcExpress.bpk 否則都會出現 [Linker Fatal Error] Fatal: Unable to open file 'EXTCTRLS.OBJ' 這個錯誤 真不知道為什麼~"~
按照該元件原始碼的設定來看,安裝成功後應該會放在 Samples 頁籤中的,如果沒有出現在該處,那應該是未安裝成功。 那個錯誤訊息是說在連結時未能找到 EXTCTRLS.OBJ 這個檔案,我這邊使用的是 BCB4,EXTCTRLS.OBJ 那個檔案是放在 BCB 目錄的 Source\Vcl 次目錄中,您可以查看一下您那邊是不是也一樣,然後再檢查一下 BCB 的相關路徑設定是否包含該目錄?如果不包含在內,就將該目錄新增進去即可,這個步驟可以參考下列文章: linker的問題 http://delphi.ktop.com.tw/topic.php?topic_id=66959 除了 EXTCTRLS.OBJ 的連結問題之外,您可能也需要一併設定好使用該元件時的路徑 (include, link, debug...),設定方式與上方連結中所提相同,但是您可以再參考一下這一篇: 簡單程序可是打不開,缺少資源,如何找回? http://delphi.ktop.com.tw/topic.php?topic_id=77273 7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-10-14 20:59:19 IP:219.81.xxx.xxx 未訂閱
謝謝REDSNOW的熱心回應 我在我的資料夾內都沒發現'EXTCTRLS.OBJ'這個檔案 但有有'EXTCTRLS.PAS' 其餘的設定與您給的兩個連結內的都一樣 請問缺少這個檔案該怎麼辦呢? 麻煩大大不吝教導 小弟感激不盡~
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-10-15 01:41:25 IP:59.115.xxx.xxx 未訂閱
wbs173 您好:    我已經不記得當初我這邊的 ExtCtrls.obj 是在何種狀況下產生的了?我試著在 DOS Box 裡邊使用 dcc32.exe 來編譯 ExtCtrls.pas 成 .obj 檔案,但是產生的檔案大小與原有的 ExtCtrls.obj 不一樣,因此我不能確定該檔是否能正確的連結使用?您可以試試看。    另外您或許可以試試另一種方式,那就是在您按照原先的步驟準備編譯該元件之前,先將 ExtCtrls.pas 也加入編譯的元件專案 (.bpk) 內,然後再進行編譯動作,看看是否可行?      7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-10-15 21:26:37 IP:219.81.xxx.xxx 未訂閱
同樣的 謝謝大大的熱心回應 真的很感謝 我試過您所說的方法囉 而且試了一天 還是都出現錯誤 這是我的圖 還煩請您幫忙看看 謝謝~
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-10-16 00:08:04 IP:61.230.xxx.xxx 未訂閱
wbs173 您好:    剛才我重新將 CalcExpress 元件移除,並將相關檔案也刪除掉,然後試著重新編譯、安裝,編譯過程很順利並未發生錯誤,但是當我試著使用它來寫一段程式做測試時,卻發現沒有產生 CalcExpress.hpp 那個檔案,我再度移除該元件並刪除相關檔案,打算繼續做測試,但是我突然發現元件盤上面 CalcExpress 的圖示竟然還在....,後續我又做了些測試,在此不累述過程,後來我不按該元件 readme.txt 檔案內註明的步驟,而換了另一種方式來安裝,結果成功了,但我使用的是 BCB4,我不確定您那邊是否也可以用相同方式來安裝?我將步驟列出如下,您試試看好了: 1. 依序點擊項目:Component -> Install Component... -> Into existing package 2. Unit file name: 點擊 "Browse..." 按鈕,找到 CalcExpress.pas 放置的位置,並點選該檔案。 3. Package file name: 到 BCB 的 Lib 子目錄內找到名為 dclusr40.bpk 的檔案 (以紅色標示的 40 是 BCB 的版本字樣,請依據您的 BCB 版本來選擇正確的檔案) 4. 點擊 "OK" 按鈕 5. Compile & install 7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-10-16 20:45:57 IP:219.80.xxx.xxx 未訂閱
感謝RedSnow的鼎力相助 還幫忙實驗安裝 真的非常謝謝 小弟終於安裝好這個元件了 我參考了RedSnow您之前寫的使用方法 但是我發現 當我在Edit中輸入運算子 便會發生錯誤 但如果我直接寫在原始碼中 卻會正常運算 EX. Edit1->Text = 5 6/2 - 3; CalcExpress1->Formula = Edit1->Text; 它就會正常算出答案 請問該如何讓使用者能直接在Edit中輸入算式呢? 是要改變Edit的型態嗎? 請會的高手大大 不吝賜教 感恩~~!
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-10-16 22:19:48 IP:61.217.xxx.xxx 未訂閱
wbs173 您好:    以下範例供您參考一下:
CalcExpress1->Variables->Clear();
CalcExpress1->Formula = Edit1->Text;
Extended args[1];    // 在本例中用不到,但是呼叫 calc 時必須要用它當參數傳入
Edit2->Text = FloatToStr(CalcExpress1->calc(args, sizeof(args)));
7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-10-16 22:35:59 IP:219.80.xxx.xxx 未訂閱
謝謝RedSnow大大的回應 不過我在Edit1中還是只要按到+-*/ 就會出現錯誤 以下是我的程式碼
    void __fastcall TForm1::Edit1Change(TObject *Sender)
{
CalcExpress1->Variables->Clear();
CalcExpress1->Formula = Edit1->Text;
}
//-----------------------------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Extended args[1];
Edit2->Text = FloatToStr(CalcExpress1->calc(args, sizeof(args)));
}    
抱歉唷 因為是菜鳥 所以問題多了點 還請會的不吝賜教~感恩~
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-10-16 22:48:37 IP:59.115.xxx.xxx 未訂閱
wbs173 您好:    請另設一個按鈕元件,然後將我提供的敘述放在該按鈕的 OnClick 事件中,當您在 Edit1 元件輸入好運算式之後,再點擊該按鈕開始將給 CalcExpress 來做處理。      7 天天敲鍵盤 v 時時按滑鼠 8
wbs173
一般會員


發表:12
回覆:26
積分:7
註冊:2005-03-15

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-10-16 22:57:50 IP:219.80.xxx.xxx 未訂閱
感謝RedSnow大大您有耐心且神速的回應>0< 小弟的問題已解決 感激萬分~謝謝~!
ivljoe
一般會員


發表:3
回覆:5
積分:1
註冊:2007-02-26

發送簡訊給我
#19 引用回覆 回覆 發表時間:2007-04-20 10:53:39 IP:60.51.xxx.xxx 訂閱
最近要用到運算式的計算功能, 爬文發現了 CalcExpress 這個好東西,
照以上方法順利安裝了之後, 高高興興的照上面的例子測試,
結果 run 時出現了以下的訊息 :-



小弟用的是 BCB 5.0, 不知道大大有遇過這個情況嗎?
編輯記錄
ivljoe 重新編輯於 2007-04-20 14:47:54, 註解 無‧
ivljoe
一般會員


發表:3
回覆:5
積分:1
註冊:2007-02-26

發送簡訊給我
#20 引用回覆 回覆 發表時間:2007-04-24 13:50:36 IP:60.51.xxx.xxx 訂閱
自己找到方法了, 大家參考參考...

1. componet -> install componet -> into new package
2. Unit file name (eg. ...\source\CalcExpress.pas)
3. Package file name (eg. ...\source\cepack.bpk)
4. click OK and install.
5. copy ...\source\CalcExpress.hpp to ...\CBuilder5\Include\Vcl


真是很好用的元件~

系統時間:2024-05-07 17:57:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!