ユーザーに数字を入れてもらい、外部のテキストファイルから
情報を読み出して表示するツールを作っています。
外部のテキストファイルには、500行くらいのデータレコードがあるので
インプットボックスには3桁まで入力できるようにしてあります。
そこで心配なのは、3桁まで入るインプットボックスには、
「1.1」や「a」の様な整数以外の数字も入力できてしまう点です。
変数の型を強制的に変えれば、システムエラーは防げますが、
整数を入れるべき場所に「1.1」なんて入っていたら、丸めれば良いというものではなく、
入力内容にタイプミスがあることは明らかなので、一旦処理を停めて入力のやり直しを求める警告を
出したいのですが、どうすれば良いでしょう。
下記の様なインプットボックスを用意して、「1.1」とか「a」とか入力しても、
強制的に丸めて「1」にしたり、「0」と扱っている様です。
vartypeで変数の型を調べようとしても、丸められた後の変数の型を拾って「4(整数)」と表示されます。
ユーザーのタイプした情報を正確に取り出して、型を判断すれば、
その後は全ての変数を配列変数に取り込み直し、
repeatやforeachを使って、「600」の様にデータベースに存在しない値を検索し、
ユーザーにタイピングのやり直しを求める事も簡単です。
でも配列に入れてしまう前に「タイピングされた内容は本当にユーザーの意図と合致しているか?」
という検証を済ませないと、ユーザーの意図しない情報が読み出されたり、該当データが無い。
という結論を返してしまう恐れがあります。こんな場合はどうするのでしょう?
システムエラーが出なければ、それで良しとするのでしょうか。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mes "調べたい情報の番号を入力してください。1〜500の整数を半角数字で入力して下さい。" input Box1Inputted,25,20,3 input Box2Inputted,25,20,3 input Box3Inputtted,25,20,3 button "調べる",*look stop *look ;ここから、入力内容のエラーチェック Box1Var=Vartype(Box1Inputted) : if Box1Var!4 {mes "間違ってますよ" : stop} Box2Var=Vartype(Box2Inputted) : if Box2Var!4 {mes "間違ってますよ" : stop} Box3Var=Vartype(Box3Inputted) : if Box3Var!4 {mes "間違ってますよ" : stop} mes "調べました。あなたが知りたいことは もにょもにょ・・" mes Box1Inputted mes Box1Var mes "\t" mes Box2Inputted mes Box2Var mes"\t" mes Box3Inputted mes Box3Var stop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;