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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0721
風の谷のウマシカユーザーの入力エラーを調べたいのですが3解決


風の谷のウマシカ

リンク

2006/7/21(Fri) 20:29:32|NO.1477

インプットボックスをたくさん並べて、
ユーザーに数字を入れてもらい、外部のテキストファイルから
情報を読み出して表示するツールを作っています。

外部のテキストファイルには、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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



この記事に返信する


Kpan

リンク

2006/7/21(Fri) 20:41:55|NO.1481

WinAPIを利用して、数字しか入力できないようスタイルを変更
してやるサンプルです。

#uselib "user32"
#func SetWindowLong "SetWindowLongA" int, int, int input x, , , 3 SetWindowLong objinfo (stat, 2), -16, $50010080 | $2000



風の谷のウマシカ

リンク

2006/7/21(Fri) 22:52:25|NO.1483

有難うございました。

って、うわっ、APIが出てきた。

このまま貼れば目的は達成ぽいですが、一応書いてある事の中身も解読中です。
命令の意味について自分で調べたことを、/**/で、はさんで書いていくだけで、
動かなくなったりするので、いまビビッテいるところですので、
「解決」のチェックは、しばしお待ちを・・。

と言っても、一度に全部理解するのは無理ぽいですが・・。
特に  , -16, $50010080 | $2000  のあたりが・・。



風の谷のウマシカ

リンク

2006/7/22(Sat) 01:56:35|NO.1487

とりあえず、上手く行っています。負数も入力できなくなりましたね。
これだとユーザーの入力内容のエラーチェックがグンと楽になります。
またユーザーがタイプした数字を安心して、配列に直接入れられる様になったので、
この後のステートメントの行数が劇的に減らせそうです。
実物はinputボックスが、もっとたくさんあるので困っていたのですが、非常に助かりました。

APIの関数の勉強は、また後日という事で・・カイケツにします(汗)

有難うございました。



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