Cześć wszystkim.
Ostatnio robię prostą aplikację, której zadaniem jest m.in. dodanie pracowników do kolekcji generycznej, zapisanie do pliku xml czy też odczyt z pliku xml. Problem jest taki, że o ile zapis do pliku xml czy dodanie pracownika działa bez problemu, tak odczyt nie działa, wyrzuca mi, że wyjątek nieobsłużony.
Wyjątek nieobsłużony: System.FormatException: Nieprawidłowy format ciągu wejściowego.
Poniżej wrzucę kod i omówię klasę, co w konsoli jest nie tak:
klasa Pracownik
https://pastebin.com/0ZUb7dFJ
Tutaj w konsoli pokazuje na błąd w linijce 138, czyli na ten fragment kodu:
public virtual void OdczytXml(DataRow dr)
{
this.imie = dr.ItemArray[0].ToString();
this.nazwisko = dr.ItemArray[1].ToString();
string[] data = dr.ItemArray[2].ToString().Split(' ');
dataUrodzenia.Dzien = Int32.Parse(data[0]); // Tutaj pokazuje w konsoli, ze cos jest nie tak
dataUrodzenia.Miesiac = data[1];
dataUrodzenia.Rok = Int32.Parse(data[2]);
string[] adres = dr.ItemArray[3].ToString().Split(' ');
adresZamieszkania.Ulica = adres[0];
adresZamieszkania.NumerDomu = adres[1];
adresZamieszkania.Miasto = adres[2];
}
Czy źle tutaj wykorzystałem funkcję Parse? Bo nie za bardzo rozumiem
Klasa FormatDanych
https://pastebin.com/aNaL4tPZ
klasa ta służy do zapisu i oodczytu pliku .xml
W konsoli pokazuje, że linijka 102 coś nie gra, chodzi o tą linijkę:
p.OdczytXml(dr);
Czyli tak jakby coś nie grało w Pracowniku, więc skoro stworzyłem obiekt klasy Pracownik i wywołuję metodę z tej klasy, to bardziej coś w tym Pracowniku nie gra. Ale podam jeszcze inne klasy
Klasa Lista: https://pastebin.com/PmuyVvNM
W konsoli wykazuje, że linijka 156 jest coś nie tak, wkleję fragment kodu:
FormatDanych df = new FormatDanych();
public void OdczytXml()
{
lista = df.OdczytXML();
}
Klasa Program: https://pastebin.com/XiPG2Dbt
Tutaj linijka 116 jest coś nie tak:
case 8:
{
lista.OdczytXml();
break;
}
Są jeszcze inne klasy Informatyk, Lekarz itp ale są one klasami pochodnymi klasy Pracownik. W zasadzie to wygląda na to, że coś w tym pracowniku nie gra to parsowanie, ale jak patrzę, to wszystko powinno być ok. Może ktoś pomoże rozwiązać ten problem. Z góry dziękuję za pomoc!