- - PR -
IsDate関数でエラーが出るのですが
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-01 11:08
「if IsDate(strA)=True then 〜 else 〜 end if」というif文を作成しているのですが、
strA="0.5m3mmジャック付5本" のとき 「正の数値が必要です。パラメータ名: year」というエラーが出て異常終了しました。 (「datetime.tryparse(strA,result)」でも同様のエラーが出ます。) strAのうち異常終了する原因の文字列が何かあるのでしょうか? また、上記エラーを回避する方法がありましたら教えていただけませんでしょうか。 なお、開発環境は ・Visual studio 2005 ・Net Framework ver 2.0 ・Asp.net です。 | ||||||||
|
投稿日時: 2007-05-01 11:46
本当ですね。「0.5m3」だけでも例外になるようです。
正しい方法かどうかは分かりませんが、例外を出さないようにするには、Try 〜 Catch する方法があります。 ただし、他の例外を握り潰さないように注意する必要はあると思いますが。 ちなみに、似たような話題「vb.netのIsDate関数のバグ?」もありました。 解決したのかどうか分かりませんが・・・ #追記 個人的には、「0.5m3mmジャック付5本」という文字列を日付チェックしないといけない仕様に疑問を感じますけど。 あと、IsDate メソッドより、System.DateTime 構造体の TryParse メソッドの使用をお薦めします。 [ メッセージ編集済み 編集者: ひろれい 編集日時 2007-05-01 11:54 ] | ||||||||
|
投稿日時: 2007-05-01 11:56
こちらでも再現確認できました。
C# の TryParse でも同じみたいですね。 おそらくバグじゃないかと思います。
| ||||||||
|
投稿日時: 2007-05-01 12:05
恐らく、ですが、0.5 の . 前を年の値として判定しようとして例外が発生しているのでしょう。 "2000.5m3mmジャック付5本" とすると例外エラーにならず、想定通りの動作をしますね。 ひろれいさんの仰るように try 〜 catch で凌ぐしかないかもしれませんね。 _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||||||
|
投稿日時: 2007-05-01 12:43
(; ´ω`) ......。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-05-01 13:16
付け足しです。
業務では厳密さを求められるため、TryParseExact メソッドを使います。 なので、あまり気になる問題ではないですね。 とはいえ、リファレンスの内容と相反している ので不具合は不具合です。 時間がある時に調べてフィードバックしておきます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-05-01 13:41
えーと。USEnglish の GregorianCalendar は一体どこかな? h/m/s/H/M/S が拙いっぽいですね。 あと ja-JP(の DateTimeFormatInfo)特有。 | ||||||||
|
投稿日時: 2007-05-01 15:01
IFormatProvider で見事に回避できますね。
文字列を"0年3組R・田中一郎" にしても、"0/3ページ" にしても、例外エラーは発生しませんでした。 #まだまだ修行が足りません orz _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog |
1|2|3
次のページへ»