- PR -

vb.netのIsDate関数のバグ?

1
投稿者投稿内容
cafe
会議室デビュー日: 2003/05/06
投稿数: 16
投稿日時: 2003-06-27 21:42
[OSのVer]:Windows xp    [VBのVer]:VB.NET(.net Framework1.0.3705)
 
 いつも参考にさせてもらっています。
 質問なのですが、IsDate関数で日付の入力チェックを行っているのですが、
If IsDate(W_GENGO & W_YMD) = False Then
Return False
End If
 この時W_GENGO=H & W_YMD=15/01/33と値が入ってきた場合
 「・・・の初期例外が mscorlib.dllで発生しました。正の数値が必要です」
 というエラーメッセージがでてプログラムが終わってしまいます。
 IsDate関数は日付のチェックを実行して、Falseかtrueを返す関数だと思うんですが
 なぜ強制終了してしまうのでしょうか?
OLEAUT32.dllのバージョンによっては変な動きをすると書いてあったのですが、
OLEAUT32.dllのバージョンも問題ない(xpを使用の為)と思うのですが、
 どなたかご存知の方がいらしゃいましたら、お願いします。
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-06-27 23:31
makuraです。

当方の環境で試してみたところ、期待した値 False を返してくれました。
他の環境で試してみることはできませんか? そのマシンだけの問題かもしれませんし。(モジュールが壊れているとか)

当方の環境
[OS] Windows XP Professional Service Pack 1a
[.net Framework] 1.0.3705
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-06-28 07:48
こんにちわ。Jubeiです。

環境問題かコード上のバグ(?)の切り分けとして
SDKヘルプにあるサンプルを試してみては如何でしょうか。

Dim MyDate, YourDate As Date
Dim NoDate As String
Dim MyCheck As Boolean
MyDate = "February 12, 1969"
YourDate = #2/12/1969#
NoDate = "Hello"
MyCheck = IsDate(MyDate) ' Returns True.
MyCheck = IsDate(YourDate) ' Returns True.
MyCheck = IsDate(NoDate) ' Returns False.

ではでは(^^)/

cafe
会議室デビュー日: 2003/05/06
投稿数: 16
投稿日時: 2003-06-29 23:14
makuraさん。Jubeiさん。ありがとうございました。

色々実験をしてみましたが、いまいち原因がわかりません。
AというPCでslhファイルから動かした時はエラーなのですが、
.exeから起動した時はエラーにはなりませんでした。
またBというPCで起動したところ、Aとまったく同じ現象でした。
ただ不思議なのは、BというPCで別のslhファイルに同じソースを書いて実行すると
エラーにはなりませんでした。
(BのPCは.Net Framework1.0と.Net Framework1.1両方入っていますが、
 .Net Framework1.1は使用してません)

slhファイルが壊れてただけなのでしょうか?
ただslhファイル自身は.dllファイルを参照してるだけだと聞いたのですが・・
.Net Frameworkの違いなのでしょうか?
vb初心者なもので何か知っていましたら、情報をお願いします。

1

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