Avatar
matesax
Redaktor
Avatar
matesax:
for (int cislo = 0; this.kter[cislo].Contains(@"\"); cislo++)
           {
               try
               {
                   if (this.cocu == 1)
                   {
                       this.tam = this.treeView1.SelectedNode.FullPath + @"\";
                       string qp;

                       if ((qp = Microsoft.VisualBasic.Interaction.InputBox("Zadejte jméno souboru:", Path.GetFileName(kter[cislo]), Path.GetFileName(kter[cislo]))) != "")
                           this.tam += qp;
                       else
                           this.tam += Path.GetFileName(kter[cislo]);

                       if (this.tam.Contains(@"\\"))
                           this.tam = this.tam.Replace(@"\\", @"\");

                       File.Copy(kter[cislo], tam, true);
                   }
                   else
                   {
                       this.tam = this.treeView1.SelectedNode.FullPath + @"\" + Path.GetFileName(kter[cislo]);
                       if (this.tam.Contains(@"\\"))
                           this.tam = this.tam.Replace(@"\\", @"\");
                       FileInfo fInfo = new FileInfo(kter[cislo]);
                       fInfo.MoveTo(tam);
                   }
               }
               catch (Exception n)
               {
                   MessageBox.Show(n.Message, "Error - Chyba");
               }
           }

Chyba se projevuje skoro na začátku - ve výrazu int cislo = 0; Vše proběhne v pořádku - jen se zobrazí tato hláška. Vadí to? Popř. - co s tím? Děkuji.

 
Odpovědět 12.6.2012 18:26
Avatar
David Jančík [sczdavos]:

Nebylo by lepší použít foreach?

foreach (string file in this.kter)

Chyba je způsobená nejspíš tím, že pole "kter" není deklarované.

Nebo, že saháš někam, kde nic není.

Nahoru Odpovědět 12.6.2012 18:58
Čím více času dostaneš, tím méně ho máš.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Musíš kromě přítomnosti lomítka na prvním řádku kontrolovat i jestli je cislo <= this.kter.Length ;) Jinak bych tam dal while cyklus na tohle.

Nahoru Odpovědět 12.6.2012 18:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

OK - vím kde je problém - neumím zastavit cyklus v čas - potřebuji spočítat počet prvků v poli kter - ale to lenght není ono - cyklus se nazastavil vůbec.

Nevím, proč bych to zesložiťoval whilem - pak bych pocet musel definovat mimo akoráte,...

Jak funguje to foreach - když narazí na prázdno ukončí se? To by pak asi bylo nejlepší - vyzkouším,...

 
Nahoru Odpovědět 12.6.2012 19:14
Avatar
matesax
Redaktor
Avatar
matesax:

Tak u foreach se mi cyklus zase neukončí,...

 
Nahoru Odpovědět 12.6.2012 19:19
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:
foreach (string acstr in this.kter)
           {
               try
               {
                   if (this.cocu == 1)
                   {
                       this.tam = this.treeView1.SelectedNode.FullPath + @"\";
                       string qp;

                       if ((qp = Microsoft.VisualBasic.Interaction.InputBox("Zadejte jméno souboru:", Path.GetFileName(acstr), Path.GetFileName(acstr))) != "")
                           this.tam += qp;
                       else
                           this.tam += Path.GetFileName(acstr);

                       if (this.tam.Contains(@"\\"))
                           this.tam = this.tam.Replace(@"\\", @"\");

                       File.Copy(acstr, tam, true);
                   }
                   else
                   {
                       this.tam = this.treeView1.SelectedNode.FullPath + @"\" + Path.GetFileName(acstr);
                       if (this.tam.Contains(@"\\"))
                           this.tam = this.tam.Replace(@"\\", @"\");
                       FileInfo fInfo = new FileInfo(acstr);
                       fInfo.MoveTo(tam);
                   }
               }
               catch (Exception n)
               {
                   MessageBox.Show(n.Message, "Error - Chyba");
               }
           }
 
Nahoru Odpovědět 12.6.2012 19:22
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Rovnou se zde zeptám - jak vymazat pole? Ne pole - ale všechny věci v něm. :)

 
Nahoru Odpovědět 12.6.2012 19:25
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Redeklarací, nebo cyklem.

pole = new datTyp[počet];

Ale v C# je lepší používat dynamické pole (List<>, Dictionary<>)

Nahoru Odpovědět 12.6.2012 19:38
Čím více času dostaneš, tím méně ho máš.
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Nechápu, odstraň logiku a nech vypisovat do Debug konzole co je v proměnné acstr. Tím bys měl chybu objevit. Foreach projede všechny prvky v poli u posledního skončí.

Nahoru Odpovědět 12.6.2012 19:42
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Děkuji - a ten forech nechápu - proč nefunguje,... Mám něco špatně v kódu?

 
Nahoru Odpovědět 12.6.2012 19:42
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Tak tuším v čem bude háček - napsal jsi všechny - a já mám hranice 9999 - takže pokud projíždí 9999 prvků, tak se nedivím, jak bych tedy měl přizpůsobovat hranice pole příchozím prvkům?

 
Nahoru Odpovědět 12.6.2012 19:46
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Použij dynamické pole (kolekci).

List<string> kter = new List<string>();
kter.Add("blah blah");

// pak klasicky
foreach (string acstr in kter)
...

Navíc máš možnosti vyhledávání - Contains. Nemusíš předem specifikovat velikost etc...

Nahoru Odpovědět 12.6.2012 19:49
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

A vjakém namespace se List<string> nachází?

 
Nahoru Odpovědět 12.6.2012 19:53
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Nevíme, co ten kód dělá, takže ti ho těžko opravíme. V tom prvním jsi vyjížděl za hranice pole, proto ta chyba.

Nahoru Odpovědět 12.6.2012 19:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Řekl bych, že sczdavos mi pomohl - jen se mi nedaří zprovoznit to dynamické pole,...

 
Nahoru Odpovědět 12.6.2012 19:58
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Kde mám definovat List? Děkuji.

 
Nahoru Odpovědět 12.6.2012 20:09
Avatar
matesax
Redaktor
Avatar
Odpovídá na matesax
matesax:

Je to System.Collec­tions.Generic. Děkuji všem. :)

 
Nahoru Odpovědět 12.6.2012 20:15
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 17 zpráv z 17.