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