HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1224
@ー@電卓について3未解決


@ー@

リンク

2007/12/24(Mon) 11:14:39|NO.12889

早速質問です。
今、電卓を作っているのですが、問題があります。

このスクリプトです。

den="とりあえず説明書を読んでください。" *hazime pos 0,0 title"電卓" screen 0,200,36 input den,200,18,300 objsize 200,18,200 button "計算",*keisannhazimari stop *keisannhazimari gosub *keisannone cls 0 pos 0,0 title""+a+"" input den,200,18,300 objsize 200,18,200 button "計算",*tugi stop *tugi gosub *keisanntwo if u=1 : o="+" if u=2 : o="-" if u=3 : o="*" if u=4 : o="/" cls 0 pos 0,0 title""+a+""+o+"" input den,200,18,300 objsize 200,18,200 button "計算",*ni stop *ni gosub *keisanntwlee cls 0 pos 0,0 title""+a+""+o+""+i+"" input den,200,18,300 objsize 200,18,200 button "計算",*kotaedasi stop *keisannone repeat 100000000 if den=cnt : a=cnt : break ;ここに問題有り loop return *keisanntwo if den="+" : u=1 if den="-" : u=2 if den="*" : u=3 if den="/" : u=4 return *keisanntwlee repeat 100000000 if den=0 : break if den=cnt : i=cnt : break ;ここにも問題有り loop return *kotaedasi if u=1 : goto *tasu if u=2 : goto *hiku if u=3 : goto *kakeru if u=4 : goto *waru *tasu kotae=a+i goto *dasu *hiku kotae=a-i goto *dasu *kakeru kotae=a*i goto *dasu *waru kotae=a/i goto *dasu *dasu cls 0 pos 0,0 title"電卓" screen 0,200,36 input den,200,18,300 objsize 200,18,200 button "計算",*keisannhazimari den=""+kotae+"" goto *hazime
;ここに問題有り
と書いてあるところが問題なんです。
なぜかというと、たとえばこのスクリプトを実行してみて、
間違って文字(abcdとかね)を入れたときに、
何回もループしてしまい、終わらなくなってしまいます。

どうすればいいでしょうか?
教えてください。

長文失礼しました。



この記事に返信する


たこ

リンク

2007/12/24(Mon) 13:25:02|NO.12892

den に入る型は文字列です。
なので計算する前に den の型を数値に変換しておきましょう。

10行目の次に

den = int(den)



FN

リンク

2007/12/24(Mon) 18:12:24|NO.12896

数字のみ入力できるようにするのもあり?

#uselib "user32.dll" #cfunc GetWindowLong "GetWindowLongA" sptr, sptr #func SetWindowLong "SetWindowLongA" sptr, sptr, sptr input buf, 100, 20 h = objinfo(stat, 2) SetWindowLong h, $FFFFFFF0/*GWL_STYLE*/, GetWindowLong(h, $FFFFFFF0/*GWL_STYLE*/)|$00002000/*ES_NUMBER*/



ANTARES

リンク

2007/12/24(Mon) 23:02:22|NO.12898

 denを数値で初期化しておけば、数値しか入りません。

den=0
input den
button "計算",*l_go
stop

*l_go
a=den+"0" ;denが文字列なら後ろに"0"が追加されるが、数値なら変化しない
mes "den+\"0\"="+a
stop



ONION software Copyright 1997-2023(c) All rights reserved.