/ / VB.Net Erfüllen Sie, wenn die Bedingung aus dem Array ausgeführt wird, BEVOR die Anweisung sonst ausgeführt wird - vb.net, if-Anweisung

VB.Net Befriedigen, wenn Bedingung von Array BEFORE else Anweisung ausgeführt wird - vb.net, if-Anweisung

Das bringt mich um, weil ich weiß, warum es so istIch weiß aber nicht, wie ich es stoppen kann. Ich lese aus einer Textdatei, in der ich 2 Benutzer in 2 Zeilen habe: bill | 777 & john | 333. Meine Bedingungsanweisung erfüllt beide Bedingungen, da ein Benutzer, wenn er durchgeschleift wird, einen Benutzer ablehnt und den anderen akzeptiert, so dass er das Wenn und das Andere ausführt. Bitte sag mir, wie ich das nacheinander mache. Durchlaufen Sie den Text, rufen Sie den richtigen Benutzer auf und gehen Sie dann durch die Bedingungen.

    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()

Antworten:

0 für die Antwort № 1

So etwas sollte funktionieren:

    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

Der Verwendungsblock verfügt automatisch über dieStreamreader. Ein boolescher Wert für eine gute Anmeldung kann die Bedingung festlegen, wenn die While-Schleife beendet wird. Das Exit While verlässt die Schleife, wenn der richtige Benutzer gefunden wird. Normalerweise ist es eine gute Idee, eine Bedingung festzulegen, um nach leeren Zeilen zu suchen

Eine Sache, auf die Sie achten sollten. Wenn ein Benutzername ein Leerzeichen enthält, funktioniert Ihr Code nicht. Sie müssen entweder die Benutzernamen einschränken oder ein anderes Trennzeichen verwenden ~.


0 für die Antwort № 2

Probieren Sie diesen Code aus:

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