Edycja jednego obiektu z listy skutkuje edycją wszystkich obiektów

0

Chcę wczytać dane z pliku tekstowego. W pliku są zdania testowe. Gdzie jest pytanie, poprawna odpowiedź, odpowiedzi. Plik wygląda mniej więcej tak:

1. Pytanie pierwsze
2
a. odp na 1 pyt
b. odp na 1 pyt
c. odp na 1 pyt
d. odp na 1 pyt
2. Pytanie drugie
3
a. odp pyt 2
b. odp pyt 2
c. odp pytanie 2
d. odp pyt 2 

To jest część kodu która odpowiada za wczytanie:

 listZadan = new List<kZadanie>();

            Skok = 2 + IloscOdpowiedzi;
            
            int counter = 0;
            string line="";
            string tmppyt = "";
            string tmppopodp = "";
            List<string> tmplstpyt = new List<string>();

            // Read the file and display it line by line.
            System.IO.StreamReader file =
                new System.IO.StreamReader(sciezka, Encoding.Default);
            while ((line = file.ReadLine()) != null)
            {
                if (counter > Skok-1)
                {
                    listZadan.Add(new kZadanie(tmppyt, tmppopodp, tmplstpyt));
                    tmppyt = "";
                    tmppopodp = "";
                    tmplstpyt.Clear();
                    counter = 0;
                    //tmplstpyt = new List<string>();
                }
                if (counter == 0)
                    tmppyt = line;
                if (counter == 1)
                    tmppopodp = line;
                if(counter>1)
                    tmplstpyt.Add(line);

                counter++;
            }

            file.Close();

klasa kZadanie:

public string Pytanie;
        public List<string> Odpowiedzi;
        public int PoprawnaOdpowiedz;
        public bool Odpytane;

        public kZadanie(string pyt, string popodp, List<string> odp)
        {
            Odpytane = false;
            Pytanie = pyt;
            try
            {
                PoprawnaOdpowiedz = int.Parse(popodp);
            }
            catch
            {
                MessageBox.Show("Błędnie wczytana poprawna odpowiedź w jednym z zadań");
            }
            Odpowiedzi = odp;
        }

Na czym polega problem. Że lista odpowiedzi do pytania jest modyfikowana w wszystkich zadaniach na listZadan, zamiast tylko w bieżącym zadaniu. Kończy się to tak że odpowiedzi z ostatniego wczytanego zadania są w wszystkich zadaniach.

zamiana znacznika <quote> na <code> - furious programming

0

Zastąpiłem

tmplstpyt.Clear();

na

tmplstpyt = new List<string>();

i już działa jak powinno :) byłem blisko. Dzięki. Jeszcze trochę za dużo nie rozumiem z powodu angielskiego ale jak mi się uda rozszyfrować to może więcej zrozumiem z tych linków.

dodanie znaczników <code class="csharp"> - furious programming

0

A to zapisywanie do pliku txt sam wymyśliłeś czy masz to jakoś z góry narzucone? Bo prościej zrobił byś to na xmlu.

0

Program pisze dla siebie. Jeśli chodzi o wczytywanie faktycznie było by prościej XML. Ale jak np kopiuje z pdf tekst z pytaniami i odpowiedziami to potem miałbym więcej pracy przy tagowaniu. Dlatego wybrałem txt. Kopiuje z pdf albo doc pytania i odpowiedzi. Odpowiednio formatuje i dopisuje poprawne odpowiedzi i można ćwiczyć pamięć przed egzaminem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1