C# - Błąd przy odczytywaniu z pliku

Witam, mam problem konkretnie z tym kawałkiem kodu.

StreamReader reader = new StreamReader(sciezka);


            string text;


            do

            {

                text = reader.ReadLine();


                string[] temp = text.[b]Split[/b](';');



                Naprawy.naprawy.Add(new Naprawy(temp[0], temp[1], temp[2], temp[3], temp[4], temp[5]));

            } while (text != null);


            reader.Close();

Cała sprawa rozchodzi się o Split. Nie chce mi za nic podzielić tak jak powinien. Po odpaleniu jest błąd w nim : Odwoływanie do obiektu nie zostało ustawione na wystąpienie obuektu. Jeśli wyrzuce Splita z kodu wszystko działa tak jak ma. Proszę o pomoc.

usuń i , bo rozumiem że w temp chcesz trzymać podciągi oddzielone znakiem ;

Sprawdzasz warunek, czy text != null PO odwołaniu się do text, co i tak gucio daje - text w którymś momencie będzie nullem i rzuci NullReferenceException. Zamień to na pętle while:

while((text = reader.ReadLine()) != null)

Po zmienieniu pętli niby działa, ale tylko w 1 przypadku kiedy są 2 linijki w pliku, i w zasadzie dodaje mi tylko tą 2. Jeśli dodam następną linijke do pliku .txt ten sam błąd co wcześniej ;/

PS. z tym i nie bardzo rozumiem o co Ci chodzi gdyż nie ma tam i tylko ;

Odczyt jest dobry, pod warunkiem, że plik ma dobry format(i kod jest taki jak podałeś wcześniej, uwzględniając moje poprawki). Jeśli któraś linijka nie będzie miała 5 “części”(tzn. nie będzie miała takiego formatu A;B;C;D;E), to będzie IndexOutOfRangeException.

@grigorij89: Splt nie istnieje.

Niestety kod nie może być dobry, bo nadal jest tak jak pisałem wcześniej :wink: Dlatego też sam nie potrafie znaleźć rozwiązania bo powinno działać.

StreamReader reader = new StreamReader(sciezka);


            string text;


            while ((text = reader.ReadLine()) != null)

            {

                text = reader.ReadLine();


                string[] temp = text.Split(';');


                Naprawy.naprawy.Add(new Naprawy(temp[0], temp[1], temp[2], temp[3], temp[4], temp[5]));

            } 


            reader.Close();

plik : a;b;c;d;e;f

Z 2 linijkami wyświetla tylko drugą. Z 1 lub więcej niż 2 - błąd …

PS. plik .txt

No nie jest dobry, bo tak jakby skopiowałeś to co dałem bez myślenia. Teraz dodaje co drugą linijkę z pliku i wymaga, by była ich parzysta ilość(hint: 2x ReadLine w jednym obiegu pętli).

Dokładnie tak jak mówisz, tylko nie rozumiem dlaczego ;>

Och jejq … przepraszam ;d Za duzo pogmatfalem z tym i zglupialem … Dzieki za pomoc !