Diskuze: System.NullReferenceException

C# .NET .NET (C# a Visual Basic) System.NullReferenceException American English version English version

Avatar
js980314
Člen
Avatar
js980314:

Ahoj, vyvolává se mi System.NullRe­ferenceExcepti­on a nemůžu dlouho přijít na to proč, tak jsem se uchýlil k dotazu na foru. Soubor samozřejmně existuje.

tabulka.ReadXml(@"C:\Users\" + Environment.UserName + @"\AppData\Roaming\Poznavacka\Poznavacka1\data.xml");

btw. proč když přidám kód v c# označím ho tak, tak se přeoznačí na Javu ?

Editováno 7.12.2014 1:57
 
Odpovědět 7.12.2014 1:55
Avatar
Odpovídá na js980314
Ondřej Štorc:

Nevím jestli to pomůže, ale zkus použít toto:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Poznavacka\Poznavacka1\data.xml");
Editováno 7.12.2014 8:44
Nahoru Odpovědět 7.12.2014 8:44
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na js980314
Michal Štěpánek:

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.U­serName ?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.

Nahoru Odpovědět 7.12.2014 10:23
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
js980314
Člen
Avatar
Odpovídá na js980314
js980314:

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");
 
Nahoru Odpovědět 7.12.2014 10:41
Avatar
js980314
Člen
Avatar
Odpovídá na js980314
js980314:

Cesta k souboru funguje, je to stejné i když odkazuji na soubor v Resources.

 
Nahoru Odpovědět 7.12.2014 10:42
Avatar
js980314
Člen
Avatar
Odpovídá na js980314
js980314:

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];
 
Nahoru Odpovědět  +1 7.12.2014 11:51
Avatar
Odpovídá na js980314
Michal Štěpánek:

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é"

Nahoru Odpovědět 7.12.2014 13:16
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na js980314
Michal Štěpánek:

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.

Nahoru Odpovědět 7.12.2014 13:41
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.