2013-11-15 4 views
0

у меня есть этот код:индекс находится вне границ массива

String Oddelovac = textBox1.Text;          
string file = openFileDialog1.FileName; 
foreach (String line in File.ReadAllLines(file).Skip(radek)) 
{ 
    String[] columns = line.Split(Oddelovac.ToCharArray()); 
    Mnozstvi = columns[poradi_mnozstvi]; 
    Prod_cena = columns[poradi_ProdCena]; 
    Ean = columns[poradi_Ean]; 
    Cislo = columns[poradi_Cislo]; 
    Nazev = columns[poradi_Nazev]; 
    Dan = columns[poradi_Dan]; 
    ng_Doklad = columns[poradi_NG]; 
    o1 = columns[poradi_o1]; 
    o2 = columns[poradi_o2]; 
    zc = columns[poradi_ZC]; 
    u1 = columns[poradi_U1]; 
    Od = columns[poradi_Od]; 
    MJ = columns[poradi_MJ]; 
    datum_nahrani = System.DateTime.Now.ToShortDateString(); 
} 

У меня есть эта ошибка: index is outside the bounds of the array - в литом гс = столбцы [poradi_ZC]; Ошибка в poradi_ZC, то есть 2 цифры ... Пример:

poradi_o1=8 
poradi_o2=9 
poradi_ZC=10 

Есть ли у вас какие-нибудь идеи?

+4

У вас меньше 11 столбцов в массиве столбцов – Steve

+0

Кажется, что 'columns' не имеет индекса' 10' - проверьте длину массива. Кроме того, при вашем подходе вы должны убедиться, что каждая строка в вашем файле ** будет разделена на нужное количество элементов, иначе вы чаще будете сталкиваться с этим исключением ... –

ответ

3

Базовые «исправить» это только попытаться получить значение, если массив вы выборка из достаточно долго:

zc = (columns.Length > poradi_ZC) ? columns.[poradi_ZC] : string.Empty; 

... но вы должны решить, если это имеет смысл в вашем случае , или если что-то еще не так. В любом случае, это причина вашей ошибки (столбцы содержат менее poradi_ZC + 1 элементов).

(Помните, что индексы массива начинаются с 0, поэтому второй элемент находится с columns[1], а последний - с columns[nrOfItems - 1]).

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