NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Martin Srdoš:23.4.2015 20:02

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ý
Tvůrce
Avatar
Odpovídá na Martin Srdoš
Jan Vargovský:23.4.2015 20:10

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
23.4.2015 20:10
Avatar
Odpovídá na Jan Vargovský
Martin Srdoš:23.4.2015 21:07

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.