Text wird doppelt ausgegeben!!!

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Text wird doppelt ausgegeben!!!

    Hi Community,

    ich habe ein Problem: Ich will ein Programm schreiben, mit dem Man sich unterhalten kann. Ich habe eine Textbox ("Command") in der man Worte eingeben kann, auf die in einer Richtextbox ("Console") mit Text geantwortet wird. Dazu habe ich bereits 2 Algorithmen. Einen für Begrüßungen un einen für 'Wie gehts dir' - Fragen ... Wenn ich aber eine Begrüßung eingebe , wird die Antwort zweimal ausgegeben: Hier der Code (Ich habe eine zweite Form ("GFX") in der ich noch eine "Console" habe. Da werden alle eingegebenen Befehle verzeichnet.):

    VB.NET-Quellcode

    1. Public Class GUI
    2. Dim Awnser As String
    3. Private Sub Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Submit.Click
    4. AlgorithmForHi()
    5. AlgorithmForHowAreYou()
    6. End Sub
    7. Sub SubroutineForAwnsering()
    8. Console.Text = Console.Text + Awnser + vbCr
    9. End Sub
    10. Sub AddComToHistory()
    11. GFX.History.Text = GFX.History.Text + Command.Text
    12. Command.Clear()
    13. End Sub
    14. Sub AlgorithmForHi()
    15. If Command.Text = "Hallo" Then Awnser = "Hallo!"
    16. If Command.Text = "hallo" Then Awnser = "Hallo!"
    17. If Command.Text = "Hi" Then Awnser = "Hallo!"
    18. If Command.Text = "hi" Then Awnser = "Hallo!"
    19. If Command.Text = "Guten Tag" Then Awnser = "Guten Tag!"
    20. If Command.Text = "guten tag" Then Awnser = "Guten Tag!"
    21. If Command.Text = "Guten Morgen" Then Awnser = "Guten Morgen!"
    22. If Command.Text = "guten morgen" Then Awnser = "Guten Morgen!"
    23. If Command.Text = "Guten Abend" Then Awnser = "Abend!"
    24. If Command.Text = "guten abend" Then Awnser = "Abend!"
    25. If Command.Text = "Abend" Then Awnser = "Moin!"
    26. If Command.Text = "abend" Then Awnser = "Moin!"
    27. If Command.Text = "Moin" Then Awnser = "Abend!"
    28. If Command.Text = "moin" Then Awnser = "Abend!"
    29. If Command.Text = "Tag" Then Awnser = "Tach!"
    30. If Command.Text = "tag" Then Awnser = "Tach!"
    31. If Command.Text = "Hiho" Then Awnser = "Hi!"
    32. If Command.Text = "hiho" Then Awnser = "Hi!"
    33. If Command.Text = "Tach" Then Awnser = "Tag!"
    34. If Command.Text = "tach" Then Awnser = "Tag!"
    35. SubroutineForAwnsering()
    36. AddComToHistory()
    37. End Sub
    38. Sub AlgorithmForHowAreYou()
    39. If Command.Text = "Wie geht es dir" Then Awnser = "Mir gehts gut!"
    40. If Command.Text = "wie geht es dir" Then Awnser = "Mir gehts gut!"
    41. If Command.Text = "Wie gehts dir" Then Awnser = "Ganz gut!"
    42. If Command.Text = "wie gehts dir" Then Awnser = "Ganz gut!"
    43. If Command.Text = "Wie geht es" Then Awnser = "Super!"
    44. If Command.Text = "wie geht es" Then Awnser = "Super!"
    45. If Command.Text = "Wie gehts" Then Awnser = "Gut!"
    46. If Command.Text = "wie gehts" Then Awnser = "Gut!"
    47. SubroutineForAwnsering()
    48. AddComToHistory()
    49. End Sub
    50. End Class


    Ich hoffe ihr könnt mir helfen, dass die Antwort nur einmal ausgegeben wird

    thx lsfan :)
    Warum brauchst du 2 Algorithmen?
    Pack doch alle Strings in eine Txt-Datei und füttere damit eine Dictionary (Of String, String).
    Leg die Key-Value-Paare mit "=" als Trennzeichen in die Txt-Datei ab:
    Hallo=Hallo!
    hallo=Hallo!
    usw

    Dann brauchst du nur bei "Submit" die passende Value zu holen und fertig.

    Übrigens, es heißt "Answer"
    Wenn ich aber eine Begrüßung eingebe , wird die Antwort zweimal ausgegeben

    Abgesehen vom Code-Design, welches bereits erwähnt wurde:
    Du rufst in Zeile 6 und 7 zwei Unterprogramme auf, welche in Zeile 42 und 56 etwas machen... Text schreiben.
    2x = doppelt
    @LsFan:: Das schreit doch nach einem Dictionary(Of String, Streing).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!