• 締切済み

インデックスが配列の境界外です。と出ます

お世話になります。 VB2008でiniファイルの中身を書き換えるプログラムを作っているのですが ↓コード     Dim LineLists As String Dim FileObj As Object Dim ListFile As String Dim f As New Form2 If f.ShowDialog(Me) = DialogResult.OK Then Vertext.Text = f.TextBox1.Text End If Try FileObj = New IO.StreamReader(Foldername & "\CUS\Basic.ini", System.Text.Encoding.Default) ListFile = FileObj.ReadToEnd() FileObj.Close() Catch ex As Exception MessageBox.Show("指定のファイルが見つかりません", "エラー", _ MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try LineLists = Split(ListFile, ControlChars.CrLf) Dim ap As String ap = LineLists(11).Substring(11, 3) LineLists(11) = LineLists(11).Replace(ap, Vertext.Text) LineLists(1) = LineLists(1).Replace("K ", "G") LineLists(3) = LineLists(3).Replace("K", "G") LineLists(3) = LineLists(3).Replace("C5", "45") LineLists(69) = LineLists(69).Replace("Mos", "Gen") LineLists(75) = LineLists(75).Replace("Mos", "Gen") LineLists(81) = LineLists(81).Replace("Mos", "Gen") LineLists(292) = LineLists(292).Replace("L.EXE", "DL.EXE") LineLists(636) = LineLists(636).Replace("E_001=K_A.kmp", "E_001=KAA.kmp") まずiniファイルを1行ずつ配列に格納し、それを行指定して文字列を置換するのですが、ちょうど最後の636のところでエラーが出ます。 最初は、テキストボックスに書き込み、置換する文字列を1行ずつ検索していって置換するコードでしたが、あまりに処理時間がかかるのでこちらの方法でやっているのですが・・・ 上記の方法ではできましたが、こちらでやるとエラーが出てしまったので、解決策がわかりません。VB初めて2週間です。 どなたかよろしくおねがいします。

みんなの回答

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.1

iniファイルが637行まで無いんじゃないかなぁ。 VBの場合配列の添え字は0~はじまるので(確か) 読み込んだレコード(行)の 1行目が、LineLists(0) 636行目が、LineLists(635) になります。 iniファイルが636行だとすると、LineListsの配列の添え字は0~635ですよ。 全体的に1ずつずれていないでしょうか?

nyoro514
質問者

お礼

原因がわかりました。 デバックした後のiniファイルを見ると500行しかありませんでした。 どうやらLineListsの配列に500行分しかいれれないので、それ以降のものは入れれないみたいです・・・ 違う方法でやってみます。ありがとうございました。

関連するQ&A