C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: インデックスが配列の境界外ですのエラーについて


(過去ログ 89 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■53353 / inTopicNo.1)  インデックスが配列の境界外ですのエラーについて
  
□投稿者/ komeko (1回)-(2010/09/10(Fri) 19:48:30)

分類:[.NET 全般] 

windowsXP SP2
Visual Basic 2008 Express Edition


6列・28行のCSVファイルをカンマでスプリットして読み込み、
列ごとにnull以外は変数へ代入しています。
ソースは以下です。


Using Reader As New IO.StreamReader(FileName, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim cb1 As String = ""
Dim cb2 As String = ""
Dim cb3 As String = ""
Dim cb4 As String = ""
Dim cb5 As String = ""
Dim cb6 As String = ""
Dim line As String = Reader.ReadLine() '1行目はヘッダーのため空打ち
line = Reader.ReadLine()
Do Until line Is Nothing
Dim txArr(5) As String
txArr = line.Split(",")
If txArr(0) <> "" Then
cb1 += txArr(0) & Chr(13) & Chr(10)
End If
If txArr(1) <> "" Then
cb2 += txArr(1) & Chr(13) & Chr(10)
End If
If txArr(2) <> "" Then
cb3 += txArr(2) & Chr(13) & Chr(10)
End If
If txArr(3) <> "" Then
cb4 += txArr(3) & Chr(13) & Chr(10)
End If
If txArr(4) <> "" Then
cb5 += txArr(4) & Chr(13) & Chr(10)
End If
If txArr(5) <> "" Then
cb6 += txArr(5) & Chr(13) & Chr(10)
End If
'MsgBox(cb1 + cb2 + cb3 + cb4 + cb5 + cb6)
line = Reader.ReadLine()
Loop
End Using


実行すると100回目の代入のとき(うまく表現できませんが17回目のループの
3列目を代入するとき)「インデックスが配列の境界外です」のエラーが
出てしまいます。
配列の使いまわしがいけないのかと思いループの中で宣言するようにしましたが
それとも違うようです。

教えて下さい。
よろしくお願い致します。

引用返信 編集キー/
■53354 / inTopicNo.2)  Re[1]: インデックスが配列の境界外ですのエラーについて
□投稿者/ todo (52回)-(2010/09/10(Fri) 20:02:32)
CSVファイルの17行目の3列目に問題があるとか。
引用返信 編集キー/
■53356 / inTopicNo.3)  Re[2]: インデックスが配列の境界外ですのエラーについて
□投稿者/ komeko (2回)-(2010/09/10(Fri) 20:11:59)
No53354 (todo さん) に返信
> CSVファイルの17行目の3列目に問題があるとか。

todoさま
ご指摘ありがとうございます。
CSVファイルに不備がありました。
17行目の3列目以降のカンマの数が足りませんでした。

解決しました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -