Problem mit Login Code

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von link_275.

    Problem mit Login Code

    Hallo,
    ich habe mir dieses Video von Youtube (Video Teil 1,,Video Teil 2) angeguckt und habe mit dem Code der dort programmiert wurde ein Problem.

    Hier erst mal der Code:

    VB.NET-Quellcode

    1. Try
    2. Dim sa As String
    3. Dim sb As String
    4. Dim a As New System.IO.StreamReader("\Login\" + UsernameTextBox.Text + "\Username.txt")
    5. sa = a.ReadLine()
    6. a.Close()
    7. Dim b As New System.IO.StreamReader("\Login\" + UsernameTextBox.Text + "\Password.txt")
    8. sb = b.ReadLine()
    9. b.Close()
    10. If UsernameTextBox.Text = sa.ToString Then 'Do this
    11. If PasswordTextBox.Text = sb.ToString Then 'do this
    12. MsgBox("Herzlich Willkommen! " + sa.ToString)
    13. Me.Hide()
    14. Chatfenster.Show()
    15. Else 'give an error
    16. MsgBox("Error! Passwort ist falsch.")
    17. End If
    18. Else 'If its not equal give an error
    19. MsgBox("Error! Der Account existiert nicht.")
    20. End If
    21. Catch ex As Exception
    22. MsgBox("Error" + ex.Message)
    23. End Try



    Wenn ich falsche Daten eingebe und auf Login Button drücke, kommt immer der Fehler wie auch in dem 2. Video zu sehen ist, das die Datei username.txt nicht gefunden werden konnte. Er soll aber doch die MsgBox (Error! Der Account existiert nicht. oder die MsgBox (Error! Passwort ist falsch.) angezeigt werden. Der das Video hochgeladen hat, hat diesen Fehler aber auch nicht behoben.
    Kann sich jemand mal den Code angucken und den Fehler beheben. Ich finde den Fehler nicht, ich bin auch noch Anfänger.

    Vielen Dank schon mal im vorraus für eure Hilfe. :)
    Ich hoffe ihr findet den Fehler.

    MFG
    Downloader17

    Edit by der_Kurt:
    Die Farbe ROT ist Moderationshinweisen vorbehalten. Bitte nicht verwenden (Siehe "Boardregeln")
    * Farbe geändert *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Nein sollte nicht!

    Schau mal:

    * WENN Benutzername richtig UND Passwort falsch -> MsgBox("Error! Passwort ist falsch.") IF Abfrage
    * WENN Benutzername falsch UND Passwort falsch -> MsgBox("Error! Der Account existiert nicht.") IF Abfrage
    * WENN die Datei/Dateien gar nicht erst gefunden werden -> MsgBox("Error" + ex.Message) Try Catch

    merkste was?

    In dem Code ist kein Fehler!

    link_275
    Hello World
    Hallo,
    erst einmal danke für die Hilfe, die Dateien existieren ja aber, er zeigt trotzdem die Meldung das Username.txt oder Passwort.txt nicht vorhanden sind.

    Wenn ich den Benutzername richtig und das Passwort falsch oder gar nicht eingebe kommt diese MsgBox nicht-> MsgBox("Error! Passwort ist falsch.").

    Und wenn ich den Benutzernamen falsch oder gar nicht eingebe und das Passwort falsch oder gar nicht eingebe kommt diese MsgBox auch nicht -> MsgBox("Error! Der Account existiert nicht.") er führt immer nur den Try Catch Block aus.

    MFG
    Downloader17

    VB.NET-Quellcode

    1. If UsernameTextBox.Text = sa And PasswordTextBox.Text = sb Then
    2. MessageBox.Show("OK")
    3. ElseIf UsernameTextBox.Text = sa And Not PasswordTextBox.Text = sb Then
    4. MessageBox.Show("Passwort falsch")
    5. ElseIf Not UsernameTextBox.Text = sa And PasswordTextBox.Text = sb Then
    6. MessageBox.Show("Benutzername falsch")
    7. Else
    8. MessageBox.Show("Die Logindaten waren beide falsch")
    9. End If



    link_275
    Hello World

    Downloader17 schrieb:

    und habe mit dem Code der dort programmiert wurde ein Problem.

    Der Code ist ein Problem. Allein die Stelle

    VB.NET-Quellcode

    1. If PasswordTextBox.Text = sb.ToString Then 'do this

    weist den Author als noob aus.
    Weil da wird ein String mittels ToString in einen String konvertiert.

    Wer sowas codet, an den sollte man sich keinesfalls orientieren.
    Aber ein Fehler direkt ist es nicht, es ist nur schlechter Stil. Und in meinem Beispiel habe Ich das, wie du siehst, nicht gemacht ;) Ja Ich weiß du meintest den Tutorial-Code ;)


    EDIT: An die Mods: Müsst Ihr immer wenn Ihr Beiträge löscht "Spam" dazuschreiben? Allein in der Definition des Wortes widerspricht sich das in dem, was Ich gepostet habe. Ich versuche hier zu helfen, da kann von Spam keine Rede sein. Könnt Ihr nicht einfach "Unnötig" oder "Nicht zum Thema passend" oder "Off Topic" als Beschreibung anfügen? Ich finde das wirft ein schlechtes Licht auf mich, als ob Ich hier wäre, um Spam zu betreiben. Das ist das letzte was Ich tun würde!



    link_275
    Hello World

    link_275 schrieb:

    ...es ist nur schlechter Stil

    Naja, was du mit "Stil" ein bischen verharmlost, läßt erkennen, dass der Author nicht recht weiß, wasser tut, denn dass man String nicht nach String umwandeln muß, das können sogar Leute verstehen, die überhaupt nicht programmieren.
    Und dasser nicht recht weiß, wassertut, das spiegelt sich ja auch im gesamten Snippet wieder - gugge nurmal diesen Ausschnitt:

    VB.NET-Quellcode

    1. Dim sa As String
    2. Dim sb As String
    3. Dim a As New System.IO.StreamReader("\Login\" + UsernameTextBox.Text + "\Username.txt")
    4. sa = a.ReadLine()
    5. a.Close()
    6. Dim b As New System.IO.StreamReader("\Login\" + UsernameTextBox.Text + "\Password.txt")
    7. sb = b.ReadLine()
    8. b.Close()
    9. If UsernameTextBox.Text = sa.ToString Then 'Do this
    10. '...

    Da wird aus UsernameTextBox.Text ein Pfad gebastelt. In dem sich die Datei "Username.txt" befinden soll. Die wird geöffnet, und geguckt, ob genau UsernameTextBox.Text drinne steht.
    Was kann man denn meinen, was zb in
    "C:\bla\Login\Peter\Username.txt" enthalten sein mag?
    "Wolfgang"?

    Die Datei "Username.txt" scheint also keine weitere Info zu enthalten, als schon durch die Existenz des Pfades erwiesen ist, und damit ist sie komplett üflüssig.
    Denn die Existenz des Pfades kann man testen mit

    VB.NET-Quellcode

    1. Directory.Exists("\Login\" + UsernameTextBox.Text)
    Damit ist dann ausgesagt, ob der Account existiert (nicht: ob das PW richtig ist), jdfs braucht dann auch keinen TryCatch zur Ablaufsteuerung zu mißbrauchen.

    Jo, ich bin so frech, und gehe zunächst mal davon aus, dass der weitere Code von gleichbleibender "Qualität" ist, und empfehle, sich nach anderen Vorbildern zu orientieren.
    Verharmlost oder nicht, ist mir ja völlig egal wie der seine Codes schreibt. Ich kann nur am Threadersteller daran apellieren, es auf jeden Fall anders zu machen. YouTube-Tutorials sind "meist" einfach nur ziemlicher Schrott. Klar, es gibt einige wirklich sehr gute, aber wie gesagt, der primäre Teil ist Schrott.

    Und dass der Code absolute Kacke ist, darüber brauchen wir nicht reden, das sieht man ja sofort, und sich darüber aufzuregen bringt nichts, das zieht diesen Thread auch nur unnötig in die Länge.

    Jo, ich bin so frech, und gehe zunächst mal davon aus, dass der weitere Code von gleichbleibender "Qualität" ist, und empfehle, sich nach anderen Vorbildern zu orientieren.

    Das hat mich "frech" nichts zu tun, das muss sogar gesagt werden. Wir sind ja nicht nur hier, um zu helfen, erklären und gelegentlich ein paar Code-Snippets springen zu lassen, sondern auch, um den neuen und Einsteigern ein gutes Vorbild zu sein und Sie auf den rechten Pfad des Lernens zu führen. Dazu gehört eben auch, dass man sagt, was von Vorteil, und was eher zu unterlassen ist. Insofern muss also fast schon darauf hingewiesen, schlechten Code, beispielsweise dieses Autors jetzt, besser nicht als Vorlage zu verwenden.

    @TE: mikeb69 hat hier einen sehr schönen Thread zum Thema guter und schlechter Code-Stil => klick hier
    Ich bitte darum, sich das einmal anzusehen :)



    link_275
    Hello World