2017-02-02 19 views
2

Я не писал ни одной длины массива, но когда я пытаюсь читать .csv-файл, я получаю «Индекс находился за пределами массива». Ошибка. .csv-файл составляет около 1 000 000 строк. Есть ли кто-нибудь, чтобы исправить этот код?Ошибка Streamreader и «Index была за пределами массива»

.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 (читать [1]); float y = float.Parse (read [2]); string z = read [10]; ' –

+0

Возможно, вы хотите иметь условие if, если read.Length> = 11 – 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]; 
      } 
     } 

При доступе к массиву, который не может быть нужной длиной, проверьте его первым.

Index was outside the bounds of the array будет сгенерировано исключение только тогда, когда строка коды пытается получить доступ элемента (N-1) в массиве, который не существует - из-за массив, имеющим меньше, чем (N) элементы

 Смежные вопросы

  • Нет связанных вопросов^_^