[C#] Kod się nie wykonuje

0

I takie proste pytanie WTF?. Dlaczego ten kod się nie wykonuje? Jestem debilem czy to program cos nawala?

   Int64 lines = CountLinesInFile("update.xml");

                
                lines = (lines - 2) / 2;
                
                linesglob = lines;
                MessageBox.Show(lines.ToString()); // = 2!
            
                xml.ReadStartElement("update");

                while (lines != 0) // while i kod w niej już się nie wykonuje
                {
                    lines--;
0

Wrozka Hiacynta mowi:
"Wieczorowa pora wlacz debugger i sprawdz zawartosc zmiennej lines (czy aby nie jest rowna 0), a spotka Cie mila niespodzianka i bedziesz pedzil szczesliwe zycie".

0

Zrobiłem to już wcześniej, wartość lines to 2, walne wam cały kod

 XMLFunctions xmlfunc = new XMLFunctions();
          

                XmlTextReader xml = null;
                xml = new XmlTextReader("update.xml");

               

                Int64 lines = CountLinesInFile("update.xml");

                
                lines = (lines - 2) / 2;
                
                linesglob = lines;
                MessageBox.Show(lines.ToString());
            
                xml.ReadStartElement("update");
                while (lines != 0)
                {
                    lines--;

                    currentfilecount++;

                    fileglob = xml.ReadElementString("File");

                    pathglob = xml.ReadElementString("Directory");

                    pathglob1 = pathglob;

                    pathglob += "/" + fileglob;
                    MessageBox.Show(fileglob);

                    root rt = new root();

                    rt.serverroot = fileglob;
                    MessageBox.Show(rt.serverroot);

                    MessageBox.Show(fileglob);

                        Thread thr = new Thread(new ThreadStart(Threadclick));
                        thr.Start();
                        while (thr.IsAlive == true)
                        {
                            Thread.Sleep(500);
                        }


                    if (pathglob1 != "")
                    {
                        File.Copy(fileglob, pathglob1);


                        File.Delete(fileglob);
                    }
                }
                
                xml.ReadEndElement();
                xml.Close();

               
                
               
        } 

MessageBox'y w środku pętli nigdy się nie pokazują...

0

Wartosc lines to 2 przed czy po tym?

lines = (lines - 2) / 2;
0

jak sie while zaczyna to jest ustawione 2 i message box tez wyswietla 2

0

Przejdz to debuggerem, nie wyswietlaj MessageBox'ow. Najedz przed wejsciem do petli na lines i sprawdz wartosc i zobacz czy wchodzi do petli. Oprocz tego warunek dla pewnosci powinien byc lines > 0.

0

Niby wchodzi do petli, dochodzi do pathglob = xml.ReadElementString("Directory"); i przerywa petle nie wiem z jakiej gruchy. Normalnie przerywa i pojawia się okienko jakby już skonczył...

0

To moze wyjatek leci? Obloz to try..catch.

0

user image

;o?

EDIT:: O JA PIER***** zamiast directory dalem path....

Dzięki johny, myślałem, że taki wyjątek powinien wywalić się sam.

0

Co znaczy sam? Obsluga wyjatku jest na 2 sposoby: try...catch lub brak ;) GDYBYS przechodzil to debuggerem to w pierwszym wypadku przeniosloby Cie do catch, w drugim Visual poinformowalby Cie, ze wyskoczyl niespodziewany wyjatek i go wyswietlil. Naucz sie debuggowac debuggerem, nie MessageBoxem.

0

No jak miał wywalić wyjątek bez catch to w ogóle nie występował właśnie!

0

Wystepowal, wyjatki sa po to, zeby ZAWSZE ostrzec.

Jedyna sytuacja, kiedy nie zobaczysz wyjatku to ta na wlasne zyczenie:

try
{
  //kod rzucajacy wyjatek
}
catch(Exception)
{} //jest teoretyczna obsluga, ale wyjatek olewamy
0

Jakby było tak jak mówisz to bym nigdy nie napisał tego tematu, tego nieobsłużonego wyjątku nigdy nie zobaczyłem

0

Ja Cie nie oskarzam ;) Po prostu najwyrazniej uzywasz debuggera inaczej niz zwykle. Visual zawsze pokazuje w trybie Debug wyjatki, nie ma od tej reguly wyjatku, nomen omen :)

0

Po prostu autor nazywa MessageBox debuggerem :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1