Obsługa strumieni nie działa

0

Czy ktoś byłby tak miły i przeanalizował kod, bo głowię się i nie mogę dojść co jest nie tak.

private void button1_Click(object sender, EventArgs e)
        {
            string login = textBox1.Text;
            string password = textBox2.Text;
            string tmp1;
            string linia;
            bool check = false;
            tmp1 = login + " " + password;
            FileStream fs = new FileStream("lekarze.txt", FileMode.Open, FileAccess.Read);

            try
            {
                StreamReader sr = new StreamReader(fs);
                while ((linia = sr.ReadLine()) != null)
                {
                    linia = sr.ReadLine();
                    if (linia.Equals(tmp1)) check = true;
                }
                sr.Close();
                fs.Close();
            }

            catch (FileNotFoundException)
            {
                MessageBox.Show("Brak pliku źródłowego lekarze ");
            }

            if (check == true)
            {
                Form3 Form3 = new Form3();
                Form3.Show();
                this.Hide();
            }
        } 
0

A może powiesz coś więcej? Jaki błąd wywala, w której linijce?

0

Problem tkwi w tym, że nie wywala błędu, kod się wykonuje, ale zmienna linia nie zczytuje wartości linii z pliku tekstowego.

0

Skąd wiesz, że nie sczytuje? Debugowałeś?

0

Dwa razy odczytujesz w jednym obiegu pętli.

                 while ((linia = sr.ReadLine()) != null) //najpierw tu
                {
                    linia = sr.ReadLine();//i tu drugi raz, wywal ta linijkę.
                    if (linia.Equals(tmp1)) check = true;
                }
0

Próbowałem z tą linijką i bez niej, nadal nie czyta.

0

Troszkę bez sensu, że czytasz całość (do końca), nawet gdy znajdziesz swoje tmp1. Jeśli tak chcesz robić, wciągnij linie pliku do tablicy stringów poprzez File.ReadAllLines, a potem np. przez Array.Find sprawdź, czy masz w tablicy to, czego szukasz (ewentualnie wczytaj do listy, czy czegokolwiek innego, i przeszukaj ten kontenerek).

0

Tak, to jest rozwiązanie i oczywiście działa poprawnie, ale na dłuższą metę to nie wystarczy :(

0

Ja tam nie wiem, o co Ci chodzi. Skopiowałem sobie Twój kod, minimalnie zmieniłem, wyszło mi tak:

class Program
    {
        static void Main(string[] args)
        {

            string login = "LoginekŚć";
            string password = "PassWord!";
            string tmp1;
            string linia;
            bool check = false;
            tmp1 = login + " " + password;
            FileStream fs; 
            try
            {
                fs = new FileStream("lekarze.txt", FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs);
                while ((linia = sr.ReadLine()) != null)
                {
                    if (linia.Equals(tmp1)) check = true;
                }
                sr.Close();
                fs.Close();
            }

            catch (FileNotFoundException)
            {
                Console.WriteLine("Brak pliku źródłowego lekarze!");
            }

            if (check == true)
            {
                Console.WriteLine("Znaleziono!");
            }
            else Console.WriteLine("Buuuuu... nie ma... :(");

            Console.ReadKey();
        }
    } 

Nie poprawiałem już nic więcej, bo mi się nie chciało. Ale zrobiłem sobie też plik tekstowy o nazwie lekarze.txt:

 lekarz jakiś
drugi lekarz
trzeci lekarz
czwarty felczer
LoginekŚć PassWord!
Siedem Ósmych
Dwanaście Jedenastych

Wszystko działa elegancko.

Pobawiłem się chwilę zmieniając dane, i pomyślałem, że pewnie wpisałeś tych lekarzy windowsowym notatnikiem, a masz polskie literki. I wtedy faktycznie - nie działa... ;-)

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