線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2563
推到 Plurk!
推到 Facebook!

小算盤的無法做混合運算(連加OK)

答題得分者是:syntax
z1478952
一般會員


發表:2
回覆:3
積分:1
註冊:2010-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-03-29 00:44:25 IP:203.64.xxx.xxx 訂閱
在這版看了好多的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 重新編輯於 2010-03-29 00:53:03, 註解 無‧
z1478952 重新編輯於 2010-03-29 11:51:27, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-03-29 12:09:52 IP:59.125.xxx.xxx 訂閱
"+" 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-03-29 13:04:58 IP:203.64.xxx.xxx 訂閱

原來是 號的問題阿@@...
可是 大大可否示範一下還是教導一下 該怎麼解決ˊ..ˋ
因為我改了好多次他還是一直有問題說...
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-03-29 13:13:31 IP:59.120.xxx.xxx 未訂閱

[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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-03-30 01:23:51 IP:203.64.xxx.xxx 訂閱
謝謝大大的指教
不過既然我程式碼是要打在 號按鈕阿,,,,,
那何必CASE要做其他的- * /的程式碼呢?
而且我做 -*/的運算基本上用2個變數應該就夠了八....
一直會有念頭要做3變數的...
可是程式每次都會出錯...

如果大大有範例的可接參考的話希望大大可以PO上來.....
因為之前那些文章的連結好像都壞了,,,,,
不過我是有找到一個做的很漂亮的工程計算機 不過 做的有點小複雜
況且範本再說也不嫌少阿 謝謝大大
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-03-30 08:28:59 IP:59.125.xxx.xxx 訂閱
你發給我的短訊,我就在這裡回覆了

要範例,其實站上有一堆,應該已經夠學習使用
要自己學著先找資料,大家不是範本產生器,無法一天到晚應付這一類需求,而且我們的時間很貴
除非問題很有挑戰性,不然,很少會有人重新給整個範本,因為「站上已有」

請搜尋關鍵字 「計算機」、「小算盤」、「四則運算」,應該會有一堆資料,請自己整理吸收,旁人無法幫你整理吸收的
再不然 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-04-10 15:06:34 IP:218.172.xxx.xxx 訂閱
樓大的大大謝謝  

可是我到現在還是搞不懂....

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