小算盤的無法做混合運算(連加OK) |
答題得分者是:syntax
|
z1478952
一般會員 發表:2 回覆:3 積分:1 註冊:2010-03-23 發送簡訊給我 |
在這版看了好多的DELPHI的範本 我也學了不少技巧
但是 這是要做的是MICROSOFT的小算盤 但只要有4則運算MR M MS MC就好了 M系列我是OK了 但是 四則混合運算就是想不到 現在是可以做連加的動作 EX 1 1 1 1 1=5這之類的東西 可是如果 1 2 3*6=18 !!?? 先PO上我原版的的程式碼 我只PO 跟 = 的程式碼 如果會了一個 其他就不會問題了 s,a:integer(做暫存AND 運算用) x(CASE用) procedure TForm1.Button15Click(Sender: TObject); begin s:=Edit1.Text; x:=1; edit1.clear; end; procedure TForm1.Button22Click(Sender: TObject); begin a:=Edit1.Text; Edit1.Text:=''; case x of 1: begin s:=IntToStr(StrToInt(s) StrToInt(a)); Edit1.Text:=s; end; 2: begin s:=IntToStr(StrToInt(s)-StrToInt(a)); Edit1.Text:=s; end; 3: begin s:=IntToStr(StrToInt(s)*StrToInt(a)); Edit1.Text:=s; end; 4: begin s:=FloatToStr(StrToInt(s)/StrToInt(a)); Edit1.Text:=s; end; end; end; 這方法是從某板大上修改來的 可以連加 但是混合的就不行了 接下來是我本人自以為厲害修改的濫版... 下面那段可以RUN 可是一按到 的符號就會出現 '' is not a valid integer value 懇請大家幫我看看哪裡錯了.... 謝謝大家 procedure TForm1.Button15Click(Sender: TObject); begin mem1:=strToint(Edit1.Text); x:=1; if x=1 then s:=IntToStr(StrToInt(s) mem1); edit1.text:='0'; end; procedure TForm1.Button22Click(Sender: TObject); begin a:=Edit1.Text; Edit1.Text:=''; case x of 1: begin s:=IntToStr(StrToInt(s) StrToInt(a)); Edit1.Text:=s; end; 2: begin s:=IntToStr(StrToInt(s)-StrToInt(a)); Edit1.Text:=s; end; 3: begin s:=IntToStr(StrToInt(s)*StrToInt(a)); Edit1.Text:=s; end; 4: begin s:=FloatToStr(StrToInt(s)/StrToInt(a)); Edit1.Text:=s; end; end; end; 還是豁DELPHI可以直接呼叫子程式 我就把子程式打CASE那個 然後讓他每次運算就直接呼叫子程式 就不用打運算的過程放在= |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
"+" is not a valid integer value, can't be used in case
===================引 用 z1478952 文 章=================== 在這版看了好多的DELPHI的範本 我也學了不少技巧 但是 這是要做的是MICROSOFT的小算盤 但只要有4則運算MR M MS MC就好了 M系列我是OK了 但是 四則混合運算就是想不到 現在是可以做連加的動作 EX 1 1 1 1 1=5這之類的東西 可是如果 1 2 3*6=18 !!?? 先PO上我原版的的程式碼 我只PO 跟 = 的程式碼 如果會了一個 其他就不會問題了 s,a:integer(做暫存AND 運算用) x(CASE用) procedure TForm1.Button15Click(Sender: TObject); begin s:=Edit1.Text; x:=1; edit1.clear; end; procedure TForm1.Button22Click(Sender: TObject); begin a:=Edit1.Text; Edit1.Text:=''; case x of 1: begin s:=IntToStr(StrToInt(s) StrToInt(a)); Edit1.Text:=s; end; 2: begin s:=IntToStr(StrToInt(s)-StrToInt(a)); Edit1.Text:=s; end; 3: begin s:=IntToStr(StrToInt(s)*StrToInt(a)); Edit1.Text:=s; end; 4: begin s:=FloatToStr(StrToInt(s)/StrToInt(a)); Edit1.Text:=s; end; end; end; 這方法是從某板大上修改來的 可以連加 但是混合的就不行了 接下來是我本人自以為厲害修改的濫版... 下面那段可以RUN 可是一按到 的符號就會出現 '' is not a valid integer value 懇請大家幫我看看哪裡錯了.... 謝謝大家 procedure TForm1.Button15Click(Sender: TObject); begin mem1:=strToint(Edit1.Text); x:=1; if x=1 then s:=IntToStr(StrToInt(s) mem1); edit1.text:='0'; end; procedure TForm1.Button22Click(Sender: TObject); begin a:=Edit1.Text; Edit1.Text:=''; case x of 1: begin s:=IntToStr(StrToInt(s) StrToInt(a)); Edit1.Text:=s; end; 2: begin s:=IntToStr(StrToInt(s)-StrToInt(a)); Edit1.Text:=s; end; 3: begin s:=IntToStr(StrToInt(s)*StrToInt(a)); Edit1.Text:=s; end; 4: begin s:=FloatToStr(StrToInt(s)/StrToInt(a)); Edit1.Text:=s; end; end; end; 還是豁DELPHI可以直接呼叫子程式 我就把子程式打CASE那個 然後讓他每次運算就直接呼叫子程式 就不用打運算的過程放在= |
z1478952
一般會員 發表:2 回覆:3 積分:1 註冊:2010-03-23 發送簡訊給我 |
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
[code delphi] if x = ' ' then begin end else if x = '-' then begin end else if x = '*' then begin end else if x = '/' then begin end; [/code] ===================引 用 z1478952 文 章=================== 原來是 號的問題阿@@... 可是 大大可否示範一下還是教導一下 該怎麼解決ˊ..ˋ 因為我改了好多次他還是一直有問題說... |
z1478952
一般會員 發表:2 回覆:3 積分:1 註冊:2010-03-23 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
你發給我的短訊,我就在這裡回覆了
要範例,其實站上有一堆,應該已經夠學習使用 要自己學著先找資料,大家不是範本產生器,無法一天到晚應付這一類需求,而且我們的時間很貴 除非問題很有挑戰性,不然,很少會有人重新給整個範本,因為「站上已有」 請搜尋關鍵字 「計算機」、「小算盤」、「四則運算」,應該會有一堆資料,請自己整理吸收,旁人無法幫你整理吸收的 再不然 Google 也是很多 如果站上有文章失連,或是早期的文獻,可以參考 http://ktop.no-ip.org/ 離線備份的部分 現在寫程式真的很簡單,語法簡單、工具簡單、知識與答案的取得更簡單 大部分,具平均水準的人的功力,差異只在「在 Google的之資料庫中,找不找得到早就已經存在的答案,連發問都不必」 所以你應該先加強資料搜索的功力,這能力,外國比中國強很多,他們從小就訓練,那我們呢?...還在半填鴨狀態 如果覺得,功力真的很差,不問不行,那也可以 Pascal 基礎文件 (D5 D6 D7包含在安裝光碟上) C Builder 6 徹底研究 Borland Delphi 4業界標準手冊實用篇 錢達智 Borland Delphi 4業界標準手冊技術篇 錢達智 Delphi 深度歷險 陳寬達 Delphi IN A NUTSHELL 英文版 Ray Liscbner Windows Programming 5th 這書都是必讀,剛開始通常看不懂,但先看,有一天你會懂的 全部看過三次再來問 (不必看懂,但每一個字都要看到,簡單的說,整本書,使用清楚、慢速的方式朗讀三次,一共7本,全部看過三次再來問,可以節省大家的時間) ===================引 用 z1478952 文 章=================== 謝謝大大的指教 不過既然我程式碼是要打在 號按鈕阿,,,,, 那何必CASE要做其他的- * /的程式碼呢? 而且我做 -*/的運算基本上用2個變數應該就夠了八.... 一直會有念頭要做3變數的... 可是程式每次都會出錯... 如果大大有範例的可接參考的話希望大大可以PO上來..... 因為之前那些文章的連結好像都壞了,,,,, 不過我是有找到一個做的很漂亮的工程計算機 不過 做的有點小複雜 況且範本再說也不嫌少阿 謝謝大大 |
z1478952
一般會員 發表:2 回覆:3 積分:1 註冊:2010-03-23 發送簡訊給我 |
樓大的大大謝謝
可是我到現在還是搞不懂.... 我之前是把EDIT清除的指令在在運算符號 -*/裡面 可議這樣算出來永遠只有後面2個數的值....... 難道說EDIT CLEAR的指令要打在數字鍵裡面?? 我先PO最近改的程式碼 請會用的大大都幫忙教一下@@ 這只是數字鍵1-3 mem1是暫存的值 procedure TForm1.Button7Click(Sender: TObject); begin //1 if (Edit1.Text='') then edit1.Text:='1' else Edit1.Text:=Edit1.Text '1'; end; procedure TForm1.Button8Click(Sender: TObject); begin //2 if (Edit1.Text='') then edit1.Text:='2' else Edit1.Text:=Edit1.Text '2'; end; procedure TForm1.Button9Click(Sender: TObject); begin //3 if (Edit1.Text='') then edit1.Text:='3' else Edit1.Text:=Edit1.Text '3'; end; 然後是 號 begin // s:=Edit1.Text; mem2:=mem2 strToint(Edit1.Text); edit1.clear; end; 同學是說CLEAR這指令打在 號是錯誤的 可是他也不太知道要怎麼改ˊˋ 至於=號的部分我想到說要打暫存的值直接用在=號的指令就好 可是還是差這4則運算ˊˋ 有請大大幫忙
編輯記錄
z1478952 重新編輯於 2010-04-10 15:08:36, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |