splitのエラーについて

このQ&Aのポイント
  • 自作の単語帳アプリで、新しい単語を保存・読み込みしようとしている際にsplitエラーが発生しています。
  • 保存したデータを読み込む際に、『英語#日本語』という形式のデータを配列に追加し、また英語と日本語を分けてフォームに追加する処理を実行しています。
  • しかし、実行するとIndexOutOfRangeExceptionというエラーが発生してしまい、解決策がわかりません。使用環境はWindowsXPとVisual Studio 2005です。
回答を見る
  • ベストアンサー

splitのエラーについて

先ほどはご回答頂きありがとうございました。 また新しい疑問が出てきたので質問させて頂きます。 引き続き、利用者が自分で単語を追加できる単語帳を作成しています。 自分で追加した新しい単語を、外部データに保存しようと、filesavedialogとfileopendialogを使ってデータのやりとりをさせようとしています。 新しく追加した単語(word(6)以降)だけを保存することはできましたが、読み込みが問題なんです。 保存したデータは各行「英語#日本語」の形で出力しており、配列も同じ形式です。 これを読み込んだとき、「英語#日本語」の形のものを配列に追加し、さらに英語と日本語をsplit("#")で分けてフォームに追加するということを行いたいのですが、いざ実行するとどうしてもエラーになってしまいます。 デバッグすると、【 】で囲んだ部分が黄色くなり、「IndexOutOfRangeExceptionはハンドルされませんでした」というエラーメッセージが出ます。 正直何が何やら分からず、検索してみても解決できませんでした。 どうかよろしくお願いします。 環境はWindowsXP、visual studio 2005を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

これは データを書き込む際の不備とデータを取り込む際の不備によるものです 書き込みを行っている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)
回答No.3

  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)
回答No.2

一部訂正 読み込み部分は   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 でした …

mobsquad08
質問者

補足

ありがとうございます。 やってみたのですが、読み込んだ後に1つ前の単語に移ろうとするとエラーになってしまいます。

関連するQ&A

  • System.String.Splitでエラー

    下記のようなSystem.String.Splitメソッドを使ったプログラムでエラーが出たのですが、解決方法がわかりません。 2番目の引数なしでも実行はできるのですが、分割した文字列が空の場合は省きたいので2番目の引数は省略したくありません。 なにか気づく方がいましたら、お教えください。 Visual C++ 2010を使っています。 他に環境についてなど補足が必要なことがありましたら言ってください。 using namespace System; int main(){ String^ s = "単語1 単語2 単語3 "; array<String^>^ result = s->Split(' ', StringSplitOptions::RemoveEmptyEntries); } error C2664: 'cli::array<Type> ^System::String::Split(...cli::array<wchar_t,dimension> ^)' : 2 番目の引数を 'System::StringSplitOptions' から 'wchar_t' に変換できません。(新しい機能 ; ヘルプを参照)

  • undefined offset というエラーについて

    タブ区切りのデータを、以下のように配列に入れています。 global $data; list($data['name'],$data['tel'],$data['address']) = split("\t",$line); きちんと動作はするのですが、undefined offset というエラーが出ているようなのですが、 なぜでしょうか。

    • ベストアンサー
    • PHP
  • PDF Split and Mergeの日本語化

    PDFを分割したり、結合したりできるソフトがないか探した所 「PDF Split and Merge」が最適だと思い、ダウンロードしました。 使用には問題ないのですが、引用サイトによれば日本語ローカライズ されているという事だったのですが、 http://www.moongift.jp/2009/08/pdf_split_and_merge/ どうしても英語表示しかできません。 下記から「pdfsam basic 1.2.0」をダウンロードしましたが http://www.pdfsam.org/?page_id=32 日本語ローカライズどのようにすれば良いかご存知の方おられますか? よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • Viusal Studio.netについて。

    現在訳あって英語版のXPとVisual Studio.netを使っています。両方とも英語版なので全く問題なかったんですが、最近日本語のソフトも使えるようにとコントロールパネルの言語設定のところで全ての地域選択のところを”日本”にしたんです。再起動後、Visual studioを立ち上げて、以前に書いたプログラムを引き出したて、デバッグすると必ずエラーが出るんです。そのプログラムは完成しており以前は普通にうごいてたんです。ためしに他のプログラムも開いてみましたが、同じ結果でした。そして必ずといっていいほど出るメッセージがUndefined "cout”なんですよね。Undefined なはずないんですけど…英語から日本語に設定を変えると、以前動いていた、プログラムが動かなくなるのでしょうか?どなたかご存知の方教えてください。

  • 英文翻訳

    以下の日本語を英語に訳して頂けないでしょうか。 ※ 状況としては、毎週、私がExcelファイルをリンク読み込みで更新し、メールでファイル保存先をハイパーリンク貼り付けて送信する流れです。 今年10月から先週にかけて、A店の売上データなどがレポートに含まれていませんでした。 本日、A店のデータを追加したファイルをお送りします。 ご不便をおかけし、大変申し訳ございません。

  • 英単語の覚え方

    自分は今、電車の中や時間を見つけては英単語を覚えているのですが質問があります。 英単語の効率の良い覚え方としては ・英語⇒日本語 ・日本語⇒英語 のどちらがいいのでしょうか。 僕自身は長文読解などで読めない単語が多いのでまずは「英語⇒日本語」の形を取っているのですが、これはどうなのでしょうか? 教えていただけたら幸いです。

  • USBの読み込みエラー

    USBの読み込みエラー パソコンとUSBをつなぐとエラーがでてデータが移動出来ません。 ウォークマンを繋いでも認識して充電は出来ますが、いざ曲を追加しようとすると急にソニックステージが落ちてしまいます。 PSPも同じくデータが移動できません どなたかよろしくお願いします

  • エクセルでのエラー?

    エクセルのデータを保存しようとしていたら今日いきなり 下記のようなエラー?が出て保存が出来ません。 「~に追加されたデータと書式の一部が保存されませんでした」 との事です。 別々のエクセルで作業を二人でしており、それを最終的に一つにくっつけて保存していたのですが、(昨日までは何の問題もなく出来たのですが)いきなりこのようなエラーが出ました。 どのようにしたら直す事ができるでしょうか。 教えて下さい。 エクセルは2003を使用しております!

  • 【DVD Shrink】エラーについて

    DVD Shrink 3.2.0.16 日本語版についての質問です。 DVDをHDDにコピーするとき、エンコードが始まってしばらくすると次のようなエラーが出てしまいます。 DVD Shrinkはエラーにより続行することができません。 ファイル”E:¥”の読み込みに失敗しました。 データエラー(巡回冗長検査(CRC)エラー)です。 以前は問題なくコピーできていました。 このエラーの原因について知っている方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう