IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Načítanie txt súboru, error

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

Aktivity
Avatar
N3ttX
Člen
Avatar
N3ttX:6.4.2017 21:57

Ehm, ahoj..

v podstate, som jemne upravil článok evidencia kinosálu tuna na itnetworku, miesto miest v kine eviduje parkovacie miesta.. vlastne je to stále ten istý kód akurát mám problém s funkciou ktorá načíta súbor.. kód:

Pastebin Kód

najprv mi to hádzalo error z catch, tak som tam pohádzal breakpointy až som sa dopracoval k tomu že chyba je na riadku

parkovisko.Nacitaj(parkoviskoOpenFileDialog.FileName);

čož absolutne nechápem kde a prečo.. zo súbormi som predtým moc nerobil, respektíve hej ale nie v takejto miere a už 2 hodiny sa snažím prísť na to prečo mi to hádže error.. a už som z toho zúfalý, ani stack overflow nepomáha :D tak sa obraciam na Vás :) vopred díky :P

 
Odpovědět
6.4.2017 21:57
Avatar
Odpovídá na N3ttX
Matyáš Černohous:6.4.2017 22:11

Jakou chybu ti to háže ? :)

 
Nahoru Odpovědět
6.4.2017 22:11
Avatar
Denyk
Člen
Avatar
Denyk:6.4.2017 23:31

Ahoj, místo "parkoviskoOpen­FileDialog" dej "vysledok".. tzn

parkovisko.Nacitaj(vysledok.FileName);
 
Nahoru Odpovědět
6.4.2017 23:31
Avatar
N3ttX
Člen
Avatar
N3ttX:6.4.2017 23:49

@Matesak
Hádže mi to to čo je v catch.. nečakane, ked to je error statement XD problém je že breakpoint mi zachytí ten príkaz a to je všetko.. nič viac, a nemôžem debugovať ekd neviem v čom je chyba :D

@Denyk
Ďakujem, skúsim zajtra :P

 
Nahoru Odpovědět
6.4.2017 23:49
Avatar
Odpovídá na N3ttX
Michal Štěpánek:7.4.2017 11:14

Kdyby sis do toho "catch" nechal vypsat tu chybovou hlášku a ne "tvoji" chybovou hlášku

MessageBox.Show("Súbor sa nepodarilo načítať.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);

, možná by tě to posunulo v hledání problému dál...
dej tam toto

MessageBox.Show(ex.Message, "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);

a řekne ti, co mu chybí...

Nahoru Odpovědět
7.4.2017 11:14
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N3ttX
Člen
Avatar
N3ttX:7.4.2017 15:31

hmm, takže zmena na vysledok.FileName nepomáha lebo tá instancia v premennej vysledok neexistuje :P
@Michal díky, nevedel som o tom príkaze :D ako som písal, zo súbormi som ešte nejak extra nepracoval.. a píše "Object reference not set to an instance of an object." ... v každom prípade díky za posun :D

 
Nahoru Odpovědět
7.4.2017 15:31
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na N3ttX
ostrozan:7.4.2017 17:23

Denyk si buď z tebe dělá srandu, nebo by si měl doplnit znalosti, DialogResult rozhodně neobsahuje FileName - původní verze je správně a chybu máš jinde.
Dej si breakpoint na začátek metody "Nacitaj" a pak si to krokuj a uvidíš, kde ti to zkolabuje.

 
Nahoru Odpovědět
7.4.2017 17:23
Avatar
Odpovídá na N3ttX
Michal Štěpánek:8.4.2017 11:24

Zkus si do messageboxu nechat vypsat úplnou cestu k tomu otevíranému souboru, podle mě program neví, kde má ten soubor najít...

Nahoru Odpovědět
8.4.2017 11:24
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Denyk
Člen
Avatar
Denyk:8.4.2017 20:19

@ostrozan Moje chyba, neuvědomil jsem si to.

@N3ttX Problém nakonec není v řádku

parkovisko.Nacitaj(parkoviskoOpenFileDialog.FileName);

, ale v načítání do arraye. Takhle by to už mělo fungovat:

public void Nacitaj(string cesta)
{
    using (StreamReader sr = new StreamReader(cesta))
    {
        for (int i = 0; i < miesta.GetLength(0); i++)
        {
            for (int j = 0; j < miesta.GetLength(1); j++)
            {
                var radek = sr.ReadLine();
                if (radek == "1")
                {
                    miesta[i, j] = true;
                }
                else
                {
                    miesta[i, j] = false;
                }
            }
        }
    }
}
 
Nahoru Odpovědět
8.4.2017 20:19
Avatar
N3ttX
Člen
Avatar
N3ttX:9.4.2017 2:21

@Denyk
už to nevypisuje nič, RAM usage trochu stúpne ked načítam súbor, aj pole načíta ale nezobrazí :D skúsim sa na to pozrieť ešte, v každom prípade keby ťa hend dačo napadlo, rád prijmem návrhy :D díky moc inak :)

 
Nahoru Odpovědět
9.4.2017 2:21
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Denyk
ostrozan:9.4.2017 8:39

Nic ve zlém, ale pokud chceš druhým radit, tak se to nejdřív sám nauč, nebo si svoje rady minimálně ověř - nebo si po sobě přečti cos napsal :-)

Máš tam samozřejmě zas chybu

var radek = sr.ReadLine();
if (radek == "1")
{
    miesta[i, j] = true;
}

radek bude mít vždy 15 znaků a tedy nikdy nebude "1" a všechny výsledky budou false

 
Nahoru Odpovědět
9.4.2017 8:39
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na N3ttX
ostrozan:9.4.2017 8:53

kdybys udělal to co ti radil Michal Štěpánek
s tou hláškou v message boxu , tak bys zjistil, že se pokoušíš zapisovat hodnotu na neexistující index pole

tvůj problém spočívá v tom, že máš prohozené i a j

místo
 miesta[i, j] = true;

dej
 miesta[j, i] = true;
 
Nahoru Odpovědět
9.4.2017 8:53
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na N3ttX
ostrozan:9.4.2017 9:05

Abych ale nebyl nespravedlivý, tak jeho problém s vyhazováním vyjímky jsi vyřešil - tím, že to i a j jsi přehodil ve for cyklech

jen ten chybějící index v podmínce u proměnné radek to pokazil

 
Nahoru Odpovědět
9.4.2017 9:05
Avatar
N3ttX
Člen
Avatar
N3ttX:20.4.2017 16:12

nefunguje ani prehodenie [i, j] na [j, i].. neviem, ked to mám s I prvým tak mi nespraví nič a práve sa deje to že mi to neuloží do žiadneho pole.. a ked ich prehodím tak mi zase vypíše index was outside the bounds of the array.. takže netuším :D a nechápem ten chýbajúci index..

 
Nahoru Odpovědět
20.4.2017 16:12
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 14 zpráv z 14.