Avatar
srdosm
Člen
Avatar
srdosm:

Potřeboval bych vysvětlit jednu zásadní věc, proč mi nefunguje kód níže.

Problém mám v druhém cyklu for. Nevím jak problém popsat, ale z kódu je to lehce pochopitelné.

private void AsciiToInt()
        {
            rtb.Text = "";

            // pole charu chArray
            char[] chArray = new char[256];

            // vyplneni pole chArray hodnotami ascii
            for (int i = 0; i < chArray.Length; i++)
            {
                chArray[i] = (char)i;
                //chArray[i] = (char)iArray[i];
            }

            // vypsani chArray do richTextBoxu NEFUNGUJE
            for (int i = 0; i < chArray.Length; i++)
            {
                if (i == 0)
                    rtb.Text += chArray[20].ToString(); // vypise znak enteru (int 20 = char 'ENTER')
                rtb.Text += chArray[i].ToString();      // neudela nic.

            }

            rtb.Text += "\nKONEC";  // nevypise se. Pokud zakomentuji radek s komentem "neudela nic", tak se vypise

        }

Nechápu, pro proč když zadávám index "ručně" (např. array[2]), tak to funguje, ale ho když zadám z proměnné (například array[i]), tak to neběží a kód navíc vůbec nepokračuje.

 
Odpovědět 23.4.2015 20:02
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na srdosm
Jan Vargovský:

Protože string je ukončený \0 znakem. Ten tam pravděpodobně dáváš taky a to je důvod, proč se ti nezobrazí. Takže si tam přidej nějakou podmínku, jestli náhodou přidávaný znak není '\0'.

Btw, nemusíš volat ToString na každém znaku. String má přetížený operátor, který akceptuje jen char.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 23.4.2015 20:10
Avatar
srdosm
Člen
Avatar
Odpovídá na Jan Vargovský
srdosm:

To je pravda, je to tak, díky. Hned na první pozici je znak \0. Jdu si s tím hrát.

 
Nahoru Odpovědět 23.4.2015 21:07
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 3 zpráv z 3.