電卓を作成するには?

解決


相談者  2015-05-14 21:04:37  No: 47305

delphiの勉強を始めたばかりで、今は電卓を作っています。
2点質問させて下さい。よろしくお願いします。

・イコールボタンが、2回押さないと数値が変化しません。
  ソースは以下のように書きました。
  1度で変化されるようにしたいです……
   case ga of
   '+' : value := value + strtofloat(edit1.text);
   '-' : value := value + strtofloat(edit1.text);
   '*' : value := value + strtofloat(edit1.text);
   '/' : value := value + strtofloat(edit1.text);
   end ;
 edit1.Text := floattostr(value) ;

・計算してみると、
  8×5  =  10
  4+2  =  4
など、間違った答えがでます。どこを直せば良いのか教えてください。

初心者で、何が分らないのかもよく分りません…
よろしくお願いいたします。


通りすがり  2015-05-14 22:04:55  No: 47306

求むエスパー。

たぶんこのままだと何も回答がつきそうにないので。

まずは"+"と"="だけの電卓を作ってみましょう。作ったらデバッグしましょう。
え?デバッグをどうすればいいのかわからない?まず作ったプログラムを実行しましょう。
思ったとおりに動きますか?動かない?ではその思ったとおりではない表示を行っている場所に
ブレークポイントを置きましょう。でもう一度実行してみましょう。
表示する直前でプログラムが止まりましたね?ではそこで表示をしようとしている
値などを[Ctrl]+[F7](評価/変更)などのデバッグ機能で表示してみてください。
なにか思ったとおりになっていないものがありましたか?ではその値を代入しているところなどで
同様にブレークポイントを置いて値をチェックしてみましょう。あとは[F8]や[F7]で一行ずつ
実行していって思ったとおりの実行経路を通っているかどうかもチェックしてみましょう。
そうやって全てが思ったとおりに動くようになれば完成です。


相談者  2015-05-14 22:40:56  No: 47307

的外れな質問だったようで…すみません。
通りすがりさんありがとうございます。

"+"と"="だけの電卓を作ってみています。
が、思い通りにいきません(T.T)

もう一度勉強しなおして、
はじめから作ってみます。
ありがとうございました!!


take  2015-05-14 23:20:46  No: 47308

エスパーで答えてみよう
かけても割っても  加算しかされないプログラムになっていますね。

結果から見ると

8×5  →  5+5=10
4+2  →  2+2=4

Valueにもテキストと同じ値が入ってる組み方になっているのでは?


相談者  2015-05-15 00:05:51  No: 47309

takeさんありがとうございます。
無駄に超能力を使わせてしまってごめんなさい;

グローバル変数の概念が難しいです...
その後いろいろ試してみましたが、
valueに初めにテキストに表示されていた数値が記憶されていないようです。


deldel  2015-05-15 01:07:57  No: 47310

ここに似たのがありますね
http://www.w-frontier.com/delphi/4_calc.html

あまり読んでませんが、これに、FormCreateで
value := 0;
と追加すればなんとかなるのではないかと思いますよ。


通りすがり  2015-05-15 02:52:36  No: 47311

グローバル変数なんて忘れて…


相談者  2015-05-15 19:08:31  No: 47312

deldelさん、通りすがりさん
ありがとうございます。

電卓出来ました!
やはり、変数の使い方に問題があったようです。

今は演算子がひとつしか使えないのですが
これから改良していきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加