Нужна помощь c#, IndexOutOfRangeException

Вот код.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Diagnostics;

namespace Laba_16
{
    class Program
    {
        struct Sklad : IComparable
        {
            string VidProduct;
            string Sort;
            int Summa;
            int kol;

            public Sklad(string VidProduct, string Sort, int Summa, int kol)
            {
                this.VidProduct = VidProduct;
                this.Sort = Sort;
                this.Summa = Summa;
                this.kol = kol;

            }
            public void write(int k, StreamWriter file)
            {
                if (k < this.kol)
                    file.WriteLine("{0}   {1}   {2}   {3} ", this.VidProduct, this.Sort, this.Summa, this.kol);
            }
            public override string ToString()   //Преобразование ToString()
            {
                return "" + VidProduct + "  " + Sort + "  " + Summa.ToString() + "  " + kol.ToString() + "";
            }
            public int CompareTo(object obj) // сортировка
            {
                Sklad b = (Sklad)obj;
                if (this.kol == b.kol) return 0;
                else if (this.kol > b.kol) return 1;
                else return -1;
            }
        }
        static void Main(string[] args)
        {
            StreamReader fileIn = new StreamReader(new FileStream("input.txt", FileMode.Open, FileAccess.Read));
            string[] text = fileIn.ReadToEnd().Split('\n');   //Записываем весь текст в text
            fileIn.Close(); //Закрываем поток

            string[] str1;
            Sklad[] cr = new Sklad[text.Length];
            for (int i = 0; i < text.Length; i++)
            {
                str1 = text[i].Split(';');
                cr[i] = new Sklad (str1[0], str1[1], Convert.ToInt32(str1[3]), Convert.ToInt32(str1[4]));
            }

            foreach (Sklad a in cr)
            {
                Console.WriteLine(a.ToString());
            }
            Array.Sort(cr);
            Console.WriteLine();
            Console.WriteLine("Сортировка по количеству на складе");

            foreach (Sklad a in cr)
            {
                Console.WriteLine(a.ToString());
            }
            Console.WriteLine();
            Console.WriteLine("Введите заданную величину: ");
            int num = int.Parse(Console.ReadLine());
            StreamWriter f = new StreamWriter(new FileStream("output.txt", FileMode.Create, FileAccess.Write));//создаем для записи
            foreach (Sklad a in cr)
            {
                a.write(num, f);
            }
            f.Close();
            Console.WriteLine("информация успешно записана");
        }
    }
}

При запуске ошибка в Необработанное исключение: System.IndexOutOfRangeException: Индекс находился вне границ массива. В этой строке cr[i] = new Sklad (str1[0], str1[1], Convert.ToInt32(str1[3]), Convert.ToInt32(str1[4]));
Что нужно сделать?

Посмотреть что в тот момент находится в str1 (отладчик или отладочный вывод через Console.WriteLine в помощь) и разобраться почему так получилось, что там происходит обращение к несуществующим в str1 номерам элементов.


Используйте кнопку Код при выкладывании кода на форум.

Спасибо, помогло