- PR -

Parse実行時に例外がスローされてしまう

1
投稿者投稿内容
thor
会議室デビュー日: 2006/11/28
投稿数: 8
投稿日時: 2007-01-22 18:06
原因が不明の為お教えいただけますと幸いです。

環境:Win2000Pro+VS.NET2005です。
VB.NETにて文字列をDate型に変換し、DateTimePickerに
セットしようとしているのですが、文字列からの変換の部分で
例外がスローされてしまいます。

表示される例外は以下の通りです。
System.IndexOutOfRangeException - インデックスが配列の境界外です。
イミディエイトウィンドゥの一番上に下のようなメッセージが表示されています。
'System.IndexOutOfRangeException' の初回例外が mscorlib.dll で発生しました。'

実際に打ち込んでいるコードは、

DateTimePicker.Value = Date.Parse(Format(CInt(『文字列(yyyyMMddの形)』), "0000/00/00"))

です。これでは無理なのでしょうか?
参考にさせて頂いたページをリンクに記します。
お教えいただけますと幸いです。宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-22 18:24
引用:

thorさんの書き込み (2007-01-22 18:06) より:

DateTimePicker.Value = Date.Parse(Format(CInt(『文字列(yyyyMMddの形)』), "0000/00/00"))

です。これでは無理なのでしょうか?


右辺のどこがまずいのか、3 行にバラしてデバッグしましょう。
キャスト ミスなのか、Format 関数の戻り値がまずいのか、切り分けできるでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
thor
会議室デビュー日: 2006/11/28
投稿数: 8
投稿日時: 2007-01-22 18:42
じゃんぬねっと様

レス有難う御座います。
前述の処理を3行に分けて簡単なサンプルを作成し試してみました。

===============
Dim intdat As Integer
intdat = CInt("20050101")
MsgBox(intdat)

Dim strdate As String
strdate = Format(intdat, "0000/00/00")
MsgBox(strdate)

Dim dat As Date
dat = Date.Parse(strdate)
===============
上記ソースでデバッグしてみたところ、一番下の
『Date.Parse』の行で例外が発生しました。
参考のページと同じ書き方をしているのですが、
何かおかしいところがあるのでしょうか・・
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-22 19:24
引用:

thorさんの書き込み (2007-01-22 18:42) より:

上記ソースでデバッグしてみたところ、一番下の『Date.Parse』の行で例外が発生しました。


この時点で、strdate には何が格納されていますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
thor
会議室デビュー日: 2006/11/28
投稿数: 8
投稿日時: 2007-01-22 19:46
じゃんぬねっと様

引用:

じゃんぬねっとさんの書き込み (2007-01-22 19:24) より:
引用:

thorさんの書き込み (2007-01-22 18:42) より:

上記ソースでデバッグしてみたところ、一番下の『Date.Parse』の行で例外が発生しました。


この時点で、strdate には何が格納されていますか?



intdatには20050101、
strdateには"2005/01/01"が格納されていました。
1

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