Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:

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
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Michal Žůrek (misaz):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:
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
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Juraj Mlich
Petr Nymsa:

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.