Diskuze: System.NullReferenceException
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nevím jestli to pomůže, ale zkus použít toto:
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Poznavacka\Poznavacka1\data.xml");
Když už chceš soubor dávat do takového umístění, tak ho dej do
C:\ProgramData
Zkoušel sis tu cestu vypsat? Co se ti dosadilo místo toho Environment.UserName ?Podle mě to nepřiřadí toho správného uživatele a hlavně, když bude přihlášen jiný uživatel, tak tam ten soubor nenajde.
Pokud to napíši takto, tak mi to zase hlásí, že DataTable nepodporuje odvozování schématu z xml.
DataTable tabulka = new DataTable();
tabulka.ReadXml(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\Poznavacka\Poznavacka1\data.xml");
Cesta k souboru funguje, je to stejné i když odkazuji na soubor v Resources.
Rozřešení.
DataSet ds = new DataSet();
StringReader stringReader = new StringReader(File.ReadAllText(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\Poznavacka\Poznavacka1\data.xml"));
ds = new DataSet();
ds.ReadXml(stringReader);
DataTable dt = ds.Tables[0];
Omylem jsem kliknul na jiné tlačítko. Nechci ti do toho kecat, ale to co ti radil Ondřej Štorc je správné a řekl bych čistější řešení. To
Environment.UserName
je tam "nehezké"
A když si uživatel změní jméno, tak to okamžitě přestane fungovat, protože jméno uživatele bude jiné než je jméno profilu. Když vytvoříš nového uživatele jménem např. "pepa", vytvoří se mu profil se jménem "pepa" a tím pádem adresář se jménem "pepa". Když uživatel změní jméno např. na "pepa1" profil zůstane nezměněn, tzn. bude pořád "pepa", ale aplikace v tu chvíli bude hledat adresář "pepa1", který ale NEEXISTUJE.
Zobrazeno 8 zpráv z 8.