- - PR -
最小値〜最大値内かのチェック
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-20 17:34
記述されているコード中にCheckminmaxファンクションを使用している個所が無いからという理由だという事はありませんか?
つまり、呼んでないというオチ。 ちなみに、このCheckminMaxがあれば、その前にやる予定の文字列長のチェックとか、数値かどうかのチェックも不要に思えます。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-01-20 17:37 ] | ||||||||||||
|
投稿日時: 2004-01-20 18:02
この文だと、「数値チェックがおかしい」ととれるのですが、そういうことでしょうか。 デバッグモードで実行し、該当部分をステップ実行してください。そして、どの部分で期待しない動きになりますか? それと、『作成者 :Hara』・・・う〜ん?せめて『頂き物』にしましょうよ^^;。いや、古いハンドルが「Hana」なので、ちと焦った。 | ||||||||||||
|
投稿日時: 2004-01-20 18:23
ごめんなさい。。。 作成者の部分はプログラムのほうのも消そうと思っていて 忘れてしまいました。
ここで、in_str_chkstrに入っている数値は数字・小数点・マイナスが入っている数値 です。 例]0.1,-10,10,00等 です。上の数値を入れると数値チェックではOK が表示されます。 (空白はNGです。)
数値チェックはどうしても別でやる必要があるので、 数値チェックはそのままに、範囲チェックを入れたいのです。 | ||||||||||||
|
投稿日時: 2004-01-20 18:46
ども、アティです。
ちょっと、辛口にいいます。 まず、質問なんですけど、関数Checkminmaxをどこから呼び出しているか、示してもらいたいです。
なにか学校の課題なんですか? であれば、範囲チェックの中の数値チェックを外に出さないと、 何かを丸写ししたのがバレバレになりますよ。 | ||||||||||||
|
投稿日時: 2004-01-20 19:02
ん〜、integer(整数値)にしているんだから、0.1は落ちますねぇ。。。Decimalで受けてください。 で、数値判定ですが、System.Convert.ToDecimalメソッドを使えば、トリムしたり何タラは不要です。 Dim d As Decimal Try d = System.Convert.ToDecimal(入力文字列) Catch ex As FormatException 数値以外が入力されたときの処理 Return Falseなど End Try たったこれだけのコードで判定できます。やっていることは、 文字列を数値に変換する→d = System.Convert.ToDecimal(入力文字列) 文字列が数値として無効なら変換できず、FormatExceptionが発生するので、それを受ける→Catch ex As FormatException (前後の空白は無視されます) これで数値にも変換しているので、dを使って値の上下限を判定すればOk! トリムした値を書き戻すなら、.ToStringメソッドを使って文字列になおします。 TextBox1.Text = d.ToString | ||||||||||||
|
投稿日時: 2004-01-21 10:45
昨日はありがとうございました。
ここであげていただいたものを参考(丸写し・・・ですが)に 作成させていただいたプログラムを、提出したところOKが出ました。 本当にありがとうございました。 昨日のうちに書き込めれば良かったのですが、 ネットが重く、書き込むことが出来ませんでした。 すみません。 実際にOKがでたコードを入れておきます。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bool_rtn As Boolean bool_rtn = Checkminmax(TextBox1.Text, TextBox3.Text, TextBox4.Text) If bool_rtn = True Then TextBox2.Text = "OK" Else TextBox2.Text = "NG" End If End Sub Private Sub Test(ByVal str) Dim i_buf As String i_buf = Str() End Sub '************************************************************ '関数名 :Checkvalue '機能概要 :数値チェック '引数 :in_str_buf…チェック対象文字列 '戻り値 :True/False '作成日 :2004/01/15 '作成者 :kito '備考 : '履歴 : '************************************************************ Public Function Checkvalue( _ ByVal in_str_buf As String _ ) As Boolean '******* ' 変数 '******* Dim str_workbuf As String Dim dbl_dt As Integer '******** ' 初期化 '******** Checkvalue = False ' 前後の空白をトリム str_workbuf = Trim(in_str_buf) '文字の長さが0かどうかチェック If Len(str_workbuf) = 0 Then Exit Function End If '数値かどうかチェック If str_workbuf <> "" Then If IsNumeric(str_workbuf) = True Then End If End If Checkvalue = True End Function '************************************************************ '関数名 :Checkminmax '機能概要 :最小値〜最大値チェック '引数 :in_str_chkstr…チェック対象文字列 '戻り値 :True/False '作成日 :2004/01/1x '作成者 : '備考 :チェック対象文字列稼動か判断した上で、 ' 最小〜最大値内かチェックする。 '履歴 : '************************************************************ Public Function Checkminmax( _ ByVal in_str_chkstr As String, _ ByVal in_int_min As Integer, _ ByVal in_int_max As Integer _ ) As Boolean Dim bl_minmax As Boolean Dim int_num As Integer Checkminmax = True '最小値が最大値より大きい時はNG If in_int_min >= in_int_max Then Checkminmax = False Exit Function End If Try bl_minmax = Checkvalue(in_str_chkstr) '数値チェック int_num = CInt(in_str_chkstr) '範囲チェック If in_int_min > int_num Or _ int_num > in_int_max Then Checkminmax = False Exit Function End If Catch Checkminmax = False End Try End Function | ||||||||||||
|
投稿日時: 2004-01-22 19:13
うーん、なんでこれでOKがでるのか気になったり…失礼。
| ||||||||||||
|
投稿日時: 2004-01-22 19:30
ごめんなさい、ちょっと失礼な書き方でした。 内容のがどうこうについて文句を言いたかったわけではありませんです。 せっかく皆さんがいろいろと教えてくれたんですから、内容をきちんと理解するようにされたらいいのではないか(努力されてたらごめんなさい)ということと、もし、課題?が終わって、はい終了になってしまうと、皆さんが答えたことが無駄になってしまうかも…とちょっと思ったのでした。 |