ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月20日(土) 06:53

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2007年8月08日(水) 21:05 
約1か月前ほど、一度おじゃましました。
(ほとんど変わらず、Excelマクロの初級レベル・・・)
大した勉強もせず、今度は仕事で使用する「通常の計算+α機能」のある
電卓に無謀にもチャレンジ中です。
(+αと言っても、ボタンを押すとあらかじめ登録してある計算方法が採用される
程度のものです)

電卓の通常機能としては、世にあるプログラム電卓?みたいな、
操作すると、それが計算結果だけでなく、式が液晶に出る電卓・・・
ああ言うのを作りたい・・・と思っています。
例えば「1+2=3」を計算した場合、普通の電卓だと液晶部には、「1」と「2」と「3」
という風に数字だけ表示されますが、これを「1+2」と表示し、「=」などを押すと、
ans部分に「3」が出る・・・という電卓です。
(「=」前なら、途中で式を直せば、直した式で計算するというもの)

EditBoxなどに入力した式で計算すると、算術式「+ - * / () 」 などの順番
をプログラムするのが、超初心者の僕では、理解不能だったので、
いろいろ調べると、以前の記述でこれがありました。
http://www.activebasic.com/forum/viewtopic.php?t=1650

内容的には、MainWndに、Editbox1とStatic1とCommandButton1があり、
EditBox1に式を入力して、ボタンを押すと、Static1に答えが出る・・・
と書かれています。
(例題式は、「10+2*3」で、ラベルに16が書かれる)
そのままコピペしてデバッグで実行してみると、最初の"+"の所で、
Function.spbの366行目の「Function Asc」の所で、「アクセス違反がありました」
として止まってしまいます。
(実行時に入力した式も、例題のまま「10+2*3」で実施)

この計算(カッコや+-*/)が出来ないと、電卓としてはつらいかと思い、
奮闘してますが、よく(いや、全く・・・)わからずです。
以前の記述でも、これを参照している人がいて、動かない・・・とレスあった後、
解決しました・・・だけで解決してしまって(うらやましい・・・)いた為、何をどうすれば
いいか・・・。
上記アドレスからコピペしてコードの記述場所などがおかしいのか・・・とも思い、
今回チェック・ご教授頂きたく、どなたか教えて下さい。
もしくは、何かが足らないのか、間違ってるか・・・すみませんが教えて下さい。
ちなみに、お時間ある方、若干解説頂けると助かります。

もうしわけありませんが、よろしくお願いします。
(Windows2000、ABバージョンは4.24です)

尚、会社のPCしか保有していないので、変事などは明日・・・になってしまう
事をご了承頂いた上で、ヘルプをお願い致します。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2007年8月09日(木) 09:47 
誤って

http://www.activebasic.com/forum/viewtopic.php?t=1650

にレスしてしまいました。

お手数ですが、そちらを見て下さい。


通報する
ページトップ
   
投稿記事Posted: 2007年8月09日(木) 16:06 
ゲストさん
ありがとうございます。
とりあえず当初の予定通り、「10+2*3」で16が出力されました。
(下記に、修正して頂いたコードを転記させて頂きました)

このプログラムで、「10+2+2+2+2*3」とか、沢山の数を使った計算も
できたので、一安心したんですが、割り算とカッコの処理がうまくいかない
みたいです・・・。
「(10+2)*3」とカッコでくくると、本当なら「36」が出力されると思いますが、
「0」になってしまいますし、とりあえず答えが整数になる割り算として「10/5」
を実施してみました。
答えは「2」ですが、「1084227584」という値が帰ってきます。
Longだからかな・・・と適当パンチで、Doubleにしてみましたが
「1073741824」になるだけでした・・・。

プログラム内に閉じカッコなら・・・ってのが無いから?・・・と思って
いますが、さっぱりで、とにかくデバッグでステップ作動させながら、
計算の再起処理?なるものの動きを把握中ですが、難しいですね・・・(> <)

素人・パクリ戦法が通じなくなってきました・・・(笑)
なんにせよ、ゲストさん、ベースとしてありがたく使用させて頂きます・・・。



通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2007年8月09日(木) 16:16 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
(10+2)*3が36にならないのは明らかにプログラム側のミスですね。
このプログラムでは、括弧閉じの後は+か-で無ければ反応しません。

それと、こちらも適当にDouble型を使ってみたところ、10/5は2になりました。 括弧がある場合もきちんと処理できるようなプログラムを暇なときに作ってみようと思います。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
投稿記事Posted: 2007年8月09日(木) 17:39 
konisiさん
前回(約1ヶ月前)に続き、またまたありがとうございます。

こちらでも、konisiさんのコードで割り算の計算できました!(^o^)丿
ありがとうございます。

あと、
>(10+2)*3が36にならないのは明らかにプログラム側のミスですね。
>このプログラムでは、括弧閉じの後は+か-で無ければ反応しません。
という事だったので、これまた素人のコピペで、「expr()」の中に、
If c=Asc("+") ~ や、Asc("-") に続けて、「If c=Asc("*") ~ と
If c=Asc("/")~」を追加したら、なんと動いちゃいました・・・。
しかも、「((1+2)*3)-4」 や 「(1+2)*(3+4)」とかでもきちんと動きます。
ビギナーズラックです・・・(笑)
ただ、「10+10-10」は答えが「10」と足し引きだけなので、普通に左→右に計算
してますが、「10/10*10」だと、本来は10/10で1で、1*10で「10」となると
思うんです・・・こっちも掛け算と割り算だけなんで、左→右ですよね?
それなのに、カッコが無いにもかかわらず、「10/(10*10)」と同じ結果の
「0.1」になるんですよ・・・

あと、計算式の中に少数点の数値があっても、計算結果がおかしく
なるみたいです・・・「0.5*3」が、「0」と出ます。
(直ぐにはできないけど、プログラム見てると、「.」は無いですもんね・・・)

微妙にあと少しなんですが、よね~
ちょっといろいろビギナーズラックで頑張ります・・・(笑)
(勉強・理解しろ!と言われそうですが・・・)

何か一気に進み、konisiさん感謝します。
実は、konisiさんのHPの電卓をベースと考えてまして・・・(^_^;)
その時は、キーの部分や、メモの部分とか・・・いろいろパクらせて下さい!(笑)

ちなみに僕は会社で使用しているPCしか持ってないんです。
現在出張している会社のPCで仕事してますが、明日は自分の会社に戻ります。
その関係で自席のPCにはこの計算プログラムが無いし、明日以降20日まで、
お盆休みでプログラミング開始は10日後・・・(T_T)
返事がかなり遅れてしまう事をご了承下さい・・・。m(_ _)m


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot] & ゲスト[25人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean