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
など、間違った答えがでます。どこを直せば良いのか教えてください。
初心者で、何が分らないのかもよく分りません…
よろしくお願いいたします。
求むエスパー。
たぶんこのままだと何も回答がつきそうにないので。
まずは"+"と"="だけの電卓を作ってみましょう。作ったらデバッグしましょう。
え?デバッグをどうすればいいのかわからない?まず作ったプログラムを実行しましょう。
思ったとおりに動きますか?動かない?ではその思ったとおりではない表示を行っている場所に
ブレークポイントを置きましょう。でもう一度実行してみましょう。
表示する直前でプログラムが止まりましたね?ではそこで表示をしようとしている
値などを[Ctrl]+[F7](評価/変更)などのデバッグ機能で表示してみてください。
なにか思ったとおりになっていないものがありましたか?ではその値を代入しているところなどで
同様にブレークポイントを置いて値をチェックしてみましょう。あとは[F8]や[F7]で一行ずつ
実行していって思ったとおりの実行経路を通っているかどうかもチェックしてみましょう。
そうやって全てが思ったとおりに動くようになれば完成です。
的外れな質問だったようで…すみません。
通りすがりさんありがとうございます。
"+"と"="だけの電卓を作ってみています。
が、思い通りにいきません(T.T)
もう一度勉強しなおして、
はじめから作ってみます。
ありがとうございました!!
エスパーで答えてみよう
かけても割っても 加算しかされないプログラムになっていますね。
結果から見ると
8×5 → 5+5=10
4+2 → 2+2=4
Valueにもテキストと同じ値が入ってる組み方になっているのでは?
takeさんありがとうございます。
無駄に超能力を使わせてしまってごめんなさい;
グローバル変数の概念が難しいです...
その後いろいろ試してみましたが、
valueに初めにテキストに表示されていた数値が記憶されていないようです。
ここに似たのがありますね
http://www.w-frontier.com/delphi/4_calc.html
あまり読んでませんが、これに、FormCreateで
value := 0;
と追加すればなんとかなるのではないかと思いますよ。
グローバル変数なんて忘れて…
deldelさん、通りすがりさん
ありがとうございます。
電卓出来ました!
やはり、変数の使い方に問題があったようです。
今は演算子がひとつしか使えないのですが
これから改良していきます。
ツイート | ![]() |