- PR -

最小値〜最大値内かのチェック

投稿者投稿内容
まち
常連さん
会議室デビュー日: 2003/03/02
投稿数: 26
お住まい・勤務地: 東京都
投稿日時: 2004-01-20 11:16
チェック対象文字列が数値かどうか判断した上で、最小値〜最大値内かチェックをしたいのですが、どうすればいいのでしょうか。教えてください。

チェック対象文字列が数値かどうか判断するコードは出来ているのですが、
最小値〜最大値ないかどうかのチェックが出来ません。
よろしくお願いします。

・・・以下、自分が作成したコードです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bool_rtn As Boolean

bool_rtn = Checkvalue(TextBox1.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


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



Public Function Checkvalue( _
ByVal in_str_chkstr As String, _
ByVal in_int_min As Integer, _
ByVal in_int_max As Integer _
) As Boolean
End Function
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-20 11:47
 なんか、ハンドルが見慣れた文字列なので反応してしまった(^^;

Checkvalue = True
Dim num As Integer
Try
 num = CInt(in_str_buf) ' 数値に変換しようとする
 if num < in_int_min AndAlso in_int_max < num Then ' 範囲チェック
  Checkvalue = False
 End If
Catch
 ' 数値でなければここへ来る
 ' (他の例外が発生してもそうだろ、というツッコミは無視(^^;)
 Checkvalue = False
End Try
まち
常連さん
会議室デビュー日: 2003/03/02
投稿数: 26
お住まい・勤務地: 東京都
投稿日時: 2004-01-20 12:44
Jittaさんありがとうございます。
早速やってみたいと思います
まち
常連さん
会議室デビュー日: 2003/03/02
投稿数: 26
お住まい・勤務地: 東京都
投稿日時: 2004-01-20 15:32
先ほどJittaさんが教えてくださったコードを追加し実行してみたのですが、
私のコードの入れ方が良くないのか、うまく作動しませんでした。
そこで最初のCheckvalueでは、数値チェックをしていますので、
関数名を変えて

'************************************************************
'関数名 :Checkvalueminmax
'機能概要 :最小値〜最大値チェック
'引数   :in_str_chkstr…チェック対象文字列
'備考 :チェック対象文字列稼動か判断した上で、
'  最小〜最大値内かチェックする。
'************************************************************
Public Function Checkminmax( _
ByVal in_str_chkstr As String, _
ByVal in_int_min As Integer, _
ByVal in_int_max As Integer _
) As Boolean
 'ここに新しくコードを追加
End Function

数値チェックでTrimなどをしているため、
数値チェックの関数を入れ子にして、チェックをしたいのですが・・・
最終的に数値チェックがOKになった時点で、
最大値、最小値チェックをコールして
全部の判断をするようにするには、どのようにすればいいのでしょうか。
教えてください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-20 16:41
引用:

M.Hさんの書き込み (2004-01-20 15:32) より:

'************************************************************
'関数名 :Checkvalueminmax
'機能概要 :最小値〜最大値チェック
'引数   :in_str_chkstr…チェック対象文字列
'備考 :チェック対象文字列稼動か判断した上で、
'  最小〜最大値内かチェックする。
'************************************************************
Public Function Checkminmax( _
ByVal in_str_chkstr As String, _
ByVal in_int_min As Integer, _
ByVal in_int_max As Integer _
) As Boolean
Dim num As Integer
Checkminmax = True
Try
 num = CInt(in_str_chkstr) ' 数値に変換しようとする ※
 if num < in_int_min AndAlso in_int_max < num Then ' 範囲チェック
  Checkminmax = False
 End If
Catch
 ' 数値でなければここへ来る
 ' (他の例外が発生してもそうだろ、というツッコミは無視(^^;)
 Checkminmax = False
End Try
End Function


※ ここでダメなら、
num = Convert.ToInt32(in_str_chkstr)


>> うまく作動しませんでした。

 どういうものを期待して、どういう出力があったかを書いてください。ただ『うまく作動しませんでした』だけだと、CIntがエラーになったのか、コーディングが悪くてコンパイルできないのか、等々、いくらでも「可能性」があって何を書いて良いやらわかりません。5W1H…基本は押さえましょう。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-20 16:47 ]
まち
常連さん
会議室デビュー日: 2003/03/02
投稿数: 26
お住まい・勤務地: 東京都
投稿日時: 2004-01-20 17:09
すみませんでした・・・

引用:

 どういうものを期待して、どういう出力があったかを書いてください。ただ『うまく作動しませんでした』だけだと、CIntがエラーになったのか、コーディングが悪くてコンパイルできないのか、等々、いくらでも「可能性」があって何を書いて良いやらわかりません。5W1H…基本は押さえましょう。



今後は気をつけます。

えと。。この件について、

引用:

'************************************************************
'関数名 :Checkvalueminmax
'機能概要 :最小値〜最大値チェック
'引数   :in_str_chkstr…チェック対象文字列
'備考 :チェック対象文字列稼動か判断した上で、
'  最小〜最大値内かチェックする。
'************************************************************
Public Function Checkminmax( _
ByVal in_str_chkstr As String, _
ByVal in_int_min As Integer, _
ByVal in_int_max As Integer _
) As Boolean
Dim num As Integer
Checkminmax = True
Try
 num = CInt(in_str_chkstr) ' 数値に変換しようとする ※
 if num < in_int_min AndAlso in_int_max < num Then ' 範囲チェック
  Checkminmax = False
 End If
Catch
 ' 数値でなければここへ来る
 ' (他の例外が発生してもそうだろ、というツッコミは無視(^^;)
 Checkminmax = False
End Try
End Function

--------------------------------------------------------------------------------


※ ここでダメなら、
num = Convert.ToInt32(in_str_chkstr)




この通りに入れて、動かしてみたのですが、
この範囲チェックの前に数値チェックを入れているのですが、
その数値チェックでプログラムを終了されてしまい、
範囲チェックのプログラムの前で終了してしまいます。

うまく説明できなくて申し訳ありません。
自分が書いたコードをすべて乗せたいと思いますので、
どこがおかしいのか見ていただけないでしょうか。
よろしくお願いします。
まち
常連さん
会議室デビュー日: 2003/03/02
投稿数: 26
お住まい・勤務地: 東京都
投稿日時: 2004-01-20 17:16
コードです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bool_rtn As Boolean

bool_rtn = Checkvalue(TextBox1.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
'作成者 :Hara
'備考 :チェック対象文字列稼動か判断した上で、
'  最小〜最大値内かチェックする。
'履歴 :
'************************************************************
Public Function Checkminmax( _
ByVal in_str_chkstr As String, _
ByVal in_int_min As Integer, _
ByVal in_int_max As Integer _
) As Boolean

Dim num As Integer
Checkminmax = True
Try
num = CInt(in_str_chkstr) ' 数値に変換しようとする ※
if num < in_int_min AndAlso in_int_max < num Then ' 範囲チェック
Checkminmax = False
End If
Catch
  ' 数値でなければここへ来る
  ' (他の例外が発生してもそうだろ、というツッコミは無視(^^;)
  Checkminmax = False
End Try
End Function

このようにさせていただきました。

長くて申し訳ありません。
よろしくお願いします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-01-20 17:29
引用:
M.Hさんの書き込み (2004-01-20 17:09) より:

この範囲チェックの前に数値チェックを入れているのですが、
その数値チェックでプログラムを終了されてしまい、
範囲チェックのプログラムの前で終了してしまいます。


入力内容が分からないので、変換結果が分かりません。
in_str_chkstr には、何が入っていますか?

それと、
コード:

End Try

の直前に、わざと
コード:

Throw

を入れてみたら、どのような例外がthrowされますか?

スキルアップ/キャリアアップ(JOB@IT)