2017-02-02 23 views
2

配列の長さを書きませんでしたが、.csvファイルを読み込もうとしましたが、「インデックスが配列の境界外です」エラーが発生します。 .csvファイルは約1 000 000行です。このコードを修正する人はいますか?Streamreaderと「インデックスが配列の境界外です」エラー

.csvファイルの行は以下のとおりです。

0000000,26.0000000000000,38.0000000000000,30.01.2017,0,0,0 ,,, 0,0、、0、、0,0,0,0

string[] read; 
char[] seperators = { ',' }; 


     try 
     { 
      Image img = Image.FromFile(txtFilePath.Text); 
      Graphics g = Graphics.FromImage(img); 
      pictureBox1.Image = img; 
      pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 

      StreamReader sr = new StreamReader(txtFile2Path.Text); 

      string data; 

      while ((data=sr.ReadLine()) !=null) 
      { 
       read = data.Split(seperators, StringSplitOptions.None); 

       float x = float.Parse(read[1]); 
       float y = float.Parse(read[2]); 
       string z = read[10]; 
      } 
     } 


     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     }  
+0

でデバッグモードでは、この行を見る 'float x = float.Parse(read [1]); –

+0

read.Length> = 11の場合にif条件を設定することができます – Ben

+0

デバッグモードでこれらの行にエラーはありません。ビジュアルスタジオでは、デバッグモードではすべてが正しいように見えます。 – Burak

答えて

1

だけにここで終わる人の答えを明確にしてください。

 while ((data=sr.ReadLine()) !=null) 
     { 
      read = data.Split(seperators, StringSplitOptions.None); 
      if (read.Length >= 11) 
      { 
       float x = float.Parse(read[1]); 
       float y = float.Parse(read[2]); 
       string z = read[10]; 
      } 
     } 

希望の長さでないアレイにアクセスする場合は、最初にチェックしてください。コードの行が存在しないアレイ内の項目(N-1)にアクセスしようとしているとき

Index was outside the bounds of the array例外は、スローされる - によりアレイ(N)未満を有することアイテム

関連する問題