Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:25.4.2013 14:30

Dobrý deň, mám funkcie ktoré čítajú a zapisujú do súboru. Pri čítaní mám takúto funkciu:

public static int LoadSound()
        {
            using (StreamReader sr = new StreamReader("Settings.txt"))
            {
                //Cislo riadku ktory momentalne cita
                int cisloRiadku = 0;
                //Text riadku ktory momentalne cita
                string s;
                //Precitanie celeho textu
                while ((s = sr.ReadLine()) != null)
                {
                    cisloRiadku++;
                    //Ak cita 3 riadok tak tam je ulozena hodnota ktoru potrebujeme ziskat a preto ju ulozime
                    if (cisloRiadku == 3)
                    {
                        return int.Parse(s);
                    }
                }

            }
            return 100;
        }

Číta to hodnotu 3 riadka na ktorom mám uložený zvuk (0-100).
Pre zápis mám takúto funkciu:

public static void SetSound(int newSound)
        {
            //Dve casti textu, jedna pred riadkom so zvukom a druha po riadku so zvukom
            StringBuilder text1 = new StringBuilder();
            StringBuilder text2 = new StringBuilder();
            StringBuilder text3 = new StringBuilder();
            text3.AppendLine(newSound.ToString());

            using (StreamReader sr = new StreamReader("Settings.txt"))
            {
                //Cislo riadku ktory momentalne cita
                int cisloRiadku = 0;
                //Text riadku ktory momentalne cita
                string s;

                while ((s = sr.ReadLine()) != null)
                {
                    cisloRiadku++;
                    //Citanie riadkov pred riadkom so zvukom a ukladanie ho do text1
                    if (cisloRiadku < 3)
                    {
                        text1.AppendLine(s);
                    }
                    //Citanie riadkov za riadkom so zvukom a ukladanie ho do text2
                    else if (cisloRiadku > 3)
                    {
                        text1.AppendLine(s);
                    }
                }
                sr.Close();
            }

            using (StreamWriter sw = new StreamWriter("Settings.txt"))
            {
                sw.Write(text1.ToString());    //Ulozenie textu pred zvukom
                sw.Write(text3.ToString()); //Ulozenie zvuku
                sw.Write(text2.ToString());    //Ulozenie textu za zvukom

                sw.Close();
            }
            text1 = new StringBuilder();
            text2 = new StringBuilder();
            text3 = new StringBuilder();
        }

Čítanie funguje. Ale zápis nie. Keď použijem funckiu prvý krát tak to vypadá takto: (Uložilo aj tie prázdne riadky na konci)

1280
720
80
tu má byť prázdny riadok ale ten formátovač ho vymazal
tu má byť prázdny riadok ale ten formátovač ho vymazal

Ale keď túto funkciu použijem druhý krát tak mi tam uloží toto:

1280
720

50
tu má byť prázdny riadok ale ten formátovač ho vymazal
tu má byť prázdny riadok ale ten formátovač ho vymazal

Neviete kde mám chybu?

Editováno 25.4.2013 14:31
 
Odpovědět
25.4.2013 14:30
Avatar
Michal Žůrek - misaz:25.4.2013 14:36

Nejspíš špatně poskládáš ten string, hod si do debugeru řádek:

using (StreamWriter sw = new StreamWriter("Settings.txt"))

a podívej se co je v text1, text2, text3

 
Nahoru Odpovědět
25.4.2013 14:36
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:25.4.2013 14:40
if (cisloRiadku < 3)
                    {
                        text1.AppendLine(s);
                    }
                    //Citanie riadkov za riadkom so zvukom a ukladanie ho do text2
                    else if (cisloRiadku > 3)
                    {
                        text1.AppendLine(s);
                    }
text1.AppendLine(s);
text1.AppendLine(s);

V obidvoch prípadoch som to ukladal do jednej premennej :) Ale aj tak dík

 
Nahoru Odpovědět
25.4.2013 14:40
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Petr Nymsa:25.4.2013 14:44

Udělej co říká Misaz a podívej se tedy co máš načtené v těch stringách, každopádně doporučuju zvolit nějaký formát pro uložení než řádek po řádku, stačilo by CSV, podívej se tu na devbook, je zde o něm pár článků :)

Nahoru Odpovědět
25.4.2013 14:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
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 4 zpráv z 4.