/ / VB.Net Satisfy, jeśli warunek z tablicy PRZED wykonaniem instrukcji else - vb.net, if-statement

VB.Net Satisfy, jeśli warunek z tablicy BEFORE else wykona - vb.net, if-statement

To mnie zabija, bo wiem, dlaczego to robiale nie wiem jak to zatrzymać. Czytam z pliku tekstowego, w którym mam 2 użytkowników na 2 liniach: rachunek | 777 i john | 333. Moja instrukcja warunkowa spełnia oba warunki, ponieważ po przejściu w pętli odrzuca jednego użytkownika i akceptuje drugi, powodując, że robi on if i in. Proszę, powiedz mi jak to zrobić za jednym razem. Zapętlić tekst, uzyskać właściwego użytkownika, a następnie przejść przez warunki.

    Dim MyReader As New StreamReader("login.txt")

While Not MyReader.EndOfStream
Dim user As String = UsernameTextBox.Text + "|" + PasswordTextBox.Text
Dim names() As String = MyReader.ReadLine().Split()
For Each myName In names
If user = myName Then
Me.Hide()
OrderForm.Show()

Else
MsgBox("Wrong username and password")
End If
Next
End While
MyReader.Close()

Odpowiedzi:

0 dla odpowiedzi № 1

Coś takiego powinno działać:

    Using MyReader As New StreamReader("login.txt")
Dim GoodUser As Boolean = False
Dim user As String = UsernameTextBox.Text + "|" + PasswordTextBox.Text
While Not MyReader.EndOfStream
Dim user As String = UsernameTextBox.Text + "|" + PasswordTextBox.Text
Dim names() As String = MyReader.ReadLine().Split()
If Not names Is Nothing Then
For Each myName In names
If user = myName Then
GoodUser = True
Me.Hide()
OrderForm.Show()
Exit While
End If
Next
End If
End While
If Not GoodUser Then
MsgBox("Wrong username and password")
End If
End Using

Blok używający automatycznie usuwastreamreader. Wartość logiczna oznaczająca dobre logowanie może ustawić warunek po zakończeniu pętli While. Wyjście While przerwie pętlę, gdy zostanie znaleziony odpowiedni użytkownik. Zazwyczaj dobrym pomysłem jest ustawienie warunku sprawdzania pustych linii

Jedna rzecz do oglądania. Jeśli nazwa użytkownika zawiera spację, której Twój kod nie działa, musisz ograniczyć nazwy użytkownika lub użyć innego ogranicznika, np. ~.


0 dla odpowiedzi nr 2

Wypróbuj ten kod:

Using r As StreamReader = New StreamReader("login.txt")

Dim line As String = r.ReadLine
Dim user As String = UsernameTextBox.Text + "|" + PasswordTextBox.Text
Dim found As Boolean = False

Do While (Not line Is Nothing)
If (line = user) Then
found = True
break
End If
line = r.ReadLine
Loop
If (Not found) Then
MessageBox.Show("Wrong username and password")
End If
End Using