Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
js980314
Člen
Avatar
js980314:7.12.2014 1:55

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
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na js980314
Ondřej Štorc:7.12.2014 8:44

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:7.12.2014 10:23

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:7.12.2014 10:41

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:7.12.2014 10:42

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:7.12.2014 11:51

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
7.12.2014 11:51
Avatar
Odpovídá na js980314
Michal Štěpánek:7.12.2014 13:16

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:7.12.2014 13:41

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.