Diskuze: Indexování pole a výpis For()

C# .NET .NET (C# a Visual Basic) Indexování pole a výpis For() American English version English version

Avatar
Matyáš Černohous (Matesak):

Zdravím, mám aplikaci která pomocí cyklu for vkládá data z listu do tabulky.

for (int c = 0; c <= 5; c++)   // první sloupec
          {
              t.Rows[c+1].Cells[0].Paragraphs.First().Append(sloupec1[c]);
           }

Chtěl bych se zeptat, jak udělat, aby se mi vypsal celý list a né jen prvkyvListu -1. Když mám c <=5 tak musím zadat do listu 7 prvků, ale vypíše to jen 6. Když zadám míň, nebo víc, tak to hodí error, že index nesmí být záporný....

Když jsem to zkoušel tak, že při přidání prvku do listu se do proměnné připočítá +1 a vypisuju takhle:

for (int c = 0; c <= prvkyvlistu-1; c++)   // první sloupec
            {
                t.Rows[c+1].Cells[0].Paragraphs.First().Append(sloupec1[c]);
             }

Tak mi to chvíli fungovalo, ale pak to zase začalo házet errory.

Díky

Editováno 20.11.2013 16:58
 
Odpovědět 20.11.2013 16:58
Avatar
Kit
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Kit:

Odstraň všechny "+1", "-1" a místo "<=" dej jen "<".

Jenom nechápu, proč se seznamem pracuješ jako s polem (nebo naopak?)

Editováno 20.11.2013 17:03
Nahoru Odpovědět 20.11.2013 17:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Zdeněk Pavlátka:

Podmínka c <= 5 projde šest prvků.(Jeden je na nule) Pokud jich chceš projít pět, použij c < 5.

Nahoru Odpovědět 20.11.2013 17:04
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Matyáš Černohous (Matesak):

Zkusil jsem to, a když jsem měl v listu 5 prvků a chtěl to vypsat, tak to stejně hodilo chybu: Index je mimo rozsah. Index musí být nezáporný a musí být menší než velikost kolekce.

for (int c = 0; c <5; c++)   // první sloupec
           {
               t.Rows[c+1].Cells[0].Paragraphs.First().Append(sloupec1[c]);
            }
 
Nahoru Odpovědět 20.11.2013 17:51
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Jiří Gracík:
t.Rows[c+1].Cel....

oprav na

t.Rows[c].Cel....
Nahoru Odpovědět 20.11.2013 18:01
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na Jiří Gracík
Matyáš Černohous (Matesak):

To právě že nejde, protože v první buňce tabulky mám nadpis, takže data můžu začít vkládat až od druhé.

 
Nahoru Odpovědět 20.11.2013 18:11
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Jiří Gracík:
for (int c = 1; c < prvkyvlistu; c++) //od indexu 1 do 4 = 2.-5. prvek
{
  t.Rows[c].Cells[0].Paragraphs.First().Append(sloupec1[c]);
}
Nahoru Odpovědět  +2 20.11.2013 18:18
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Kit:

Tak proč s tím seznamem pracuješ, jako kdyby to bylo pole?

Nahoru Odpovědět 20.11.2013 18:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Jakub Lásko[Saarix]:

Tabulka určitě obsahuje DataContext, nebo ItemsSource tak tam vlož celé své pole a o nic se nemusíš starat.

Nahoru Odpovědět 21.11.2013 6:25
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Matyáš Černohous (Matesak):

Dělám to pomocí knihovny DocX. Výstup programu je do MS Word dokumentu.
Jinak díky, za rady. Konečně to už funguje tak jak potřebuju.

 
Nahoru Odpovědět 21.11.2013 12:37
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 10 zpráv z 10.