- ベストアンサー
splitのエラーについて
- 自作の単語帳アプリで、新しい単語を保存・読み込みしようとしている際にsplitエラーが発生しています。
- 保存したデータを読み込む際に、『英語#日本語』という形式のデータを配列に追加し、また英語と日本語を分けてフォームに追加する処理を実行しています。
- しかし、実行するとIndexOutOfRangeExceptionというエラーが発生してしまい、解決策がわかりません。使用環境はWindowsXPとVisual Studio 2005です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これは データを書き込む際の不備とデータを取り込む際の不備によるものです 書き込みを行っているsavedataメソッドの中で styrData += word(a) & vbCrLf といった具合に CRLFつきで登録しているのに base.WriteLine( strData ) で書き込みをしているので 余分なCRLFがついてしまいます ここを base.Write( strData ) としてみましょう 読み込み時の不備は 読み込んだデータに #が含まれているのかをチェックしていない点です Dim strSplit() As String = strLine.Split("#") TextBox1.Text = strSplit(0) TextBox2.Text = strSplit(1) TextBox3.Text = a + 1 & "/" & current + 1 strLine = word(current) の部分を if strLine.IndexOf( "#" ) >= 0 then Dim strSplit() As String = strLine.Split("#") TextBox1.Text = strSplit(0) TextBox2.Text = strSplit(1) TextBox3.Text = a + 1 & "/" & current + 1 strLine = word(current) end if といった具合にして見ましょう
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
if strLine.IndexOf( "#" ) >= 0 then current += 1 Dim strSplit() As String = strLine.Split("#") ' 不要 TextBox1.Text = strSplit(0) ' 不要 TextBox2.Text = strSplit(1) TextBox3.Text = a + 1 & "/" & current + 1 ' この処理は不要 ' strLine = word(current) ' 読み込んだデータを配列に登録 word(current) = strLine end if といった具合でしょう …
- redfox63
- ベストアンサー率71% (1325/1856)
一部訂正 読み込み部分は if strLine.IndexOf( "#" ) >= 0 then current += 1 Dim strSplit() As String = strLine.Split("#") TextBox1.Text = strSplit(0) TextBox2.Text = strSplit(1) TextBox3.Text = a + 1 & "/" & current + 1 ' この処理は不要 ' strLine = word(current) end if でした …
補足
ありがとうございます。 やってみたのですが、読み込んだ後に1つ前の単語に移ろうとするとエラーになってしまいます。