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 - キャスト zc = 列[poradi_ZC]; エラーは poradi_ZC にあり、2 桁です... 例:

poradi_o1=8
poradi_o2=9
poradi_ZC=10

何かアイデアはありますか?

4

1 に答える 1

3

基本的な「修正」は、フェッチしている配列が十分に長い場合にのみ値を取得しようとすることです。

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

...しかし、それがあなたの場合に意味があるかどうか、または何か他のことが間違っているかどうかを判断する必要があります。いずれにせよ、それがエラーの理由です(列に含まれる要素が少ないporadi_ZC + 1)。

(配列のインデックスは 0 から始まるので、2 番目の要素は でcolumns[1]、最後の要素は であることに注意してくださいcolumns[nrOfItems - 1])。

于 2013-11-15T08:30:11.603 に答える