« 【講座】「教えて!おにたま!!」 | メイン | HSPTV!メルマガ 第25号 »

2006年10月11日

【講座】HSPよく使うフレーズ 第16回 データを入力する

こないだのアンケートにもあったけど、入力画面のノウハウってのは
どんなのがあるかなぁ?と思って、いくつかスクリプトを書いてみたよ。

今回は生年月日などを入力するスクリプトの最小限のスクリプトはこちら。

;入力画面1 数値変数
pos 100,100
objsize 40,20
input year
input month
input date
button "表示",*step2
stop
*step2
mes ""+year+"年"+month+"月"+date+"日"
stop

[input1.hsp/HSP3]

数値を入れる部分が3つあって、そこに数値を入れたあとに
”表示”ボタンを押すと、入力した値を表示する。
一応、これでも動くのですが、いくつか気になる点があるかなぁ。

一番気になるのは、入力を始める前に”0”がワクに入っているという事。
何かを注文するとか、個数を表す場合には最初に0が出ててもいいけど、
年月日にはちょっと向かない感じがするね。
というわけで、文字変数として入力することにしてみよう。
最初に変数を文字列として用意し、それをinput文に使う。


;入力画面2 文字変数
year=""
month=""
date=""
pos 100,100
objsize 40,20
input year
input month
input date
button "表示",*step2
stop
*step2
mes ""+year+"年"+month+"月"+date+"日"
stop

[input2.hsp/HSP3]

これでも同じように表示する。
でも、この後、計算するときに面倒だったり、全角での入力や異常な値の
入力に対応できません。
困った。

ユーザーは選択するだけにしてみたらどうだろう?
とりあえず月だけ。

;入力画面3 combox
month_sel=0
objsize 40,24
pos 100,100
combox month_sel,100,"1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12"
pos 100,200
button "表示",*step2
stop
*step2
month=month_sel+1
mes ""+month+"月"
stop

[input3.hsp/HSP3]

確かに出来るけど・・・
ちなみに、1を選ぶと0行目という感じになってるので、
最後の方に1を足すのがポイント。

もう1回、ユーザーが入力する形式で、しかもエラーメッセージ付きを
考えてみよう。

条件は
・年は1900から2100
・月は1から12
・日は1から31
・全ての値は半角の数字

というわけで、こんな感じです。

;入力画面4 文字変数+エラー
sdim error,10,30
error(0)="エラーメッセージ"
error(1)="年の値が1900未満か半角の数字ではありません。"
error(2)="年の値が2100以上です。"
error(3)="月の値が小さいか半角の数字ではありません。"
error(4)="月の値が大きすぎです。"
error(5)="日の値が小さいか半角の数字ではありません。"
error(6)="日の値が大きすぎです。"
year=""
month=""
date=""
*top
pos 100,100
objsize 40,20
input year
input month
input date
button "表示",*step2
stop
*step2
err_num=0
year_num=int(year)
if (year_num<1900){ err_num=1:goto *erorr }
if (year_num>2100){ err_num=2:goto *erorr }
month_num=int(month)
if (month_num<1){ err_num=3:goto *erorr }
if (month_num>12){ err_num=4:goto *erorr }
date_num=int(date)
if (date_num<1){ err_num=5:goto *erorr }
if (date_num>31){ err_num=6:goto *erorr }
mes ""+year_num+"年"+month_num+"月"+date_num+"日"
stop
*erorr
cls
mes error(err_num)
goto *top

[input4.hsp/HSP3]


えっ?"2100以上"ってのは2100を含んでるって?
まあ、そうなんだけどね。

ま、そのへんは気にせずに。
(うすあじ)

投稿者 usuaji : 2006年10月11日 00:30

口臭チェッカー市場