Auf bestimmte Wörter im Input reagieren?

  • Hallo,

    nun kommen wir zu meinem letzten Problem. Ich habe mal ein kleines Beispielscript vorbereitet :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1_1 = GUICreate("Form1", 682, 680, 206, 148,$WS_POPUP)
    $Input1 = GUICtrlCreateInput("", 304, 168, 329, 21)
    $Edit1 = GUICtrlCreateEdit("", 304, 248, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit1")
    $Edit2 = GUICtrlCreateEdit("", 304, 320, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit2")
    $suchen = GUICtrlCreateButton("suchen", 304, 200, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $suchen
    switch GuiCtrlRead($Input1)
    Case "Banane", "Banana", "gebogene Stange"
    Funktion_1()
    Case "Tomate"
    Funktion_2()
    Case "Tomato"
    Funktion_2()
    Case "spanische Tomaten"
    Funktion_2()
    Case Else
    MsgBox(0, "Rückmeldung", "Auswertung kann nicht erfolgen. Bitte gebe sie ein anderes Wort ein.")
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func Funktion_1()
    $Text = "Aberglaube"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Langweilig"
    GUICtrlSetData($Edit2, $Text2)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Funktion_2()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    ; Das erste vom Zufallsprinzip soll das sein
    $Text = "Spielzeug"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Droge"
    GUICtrlSetData($Edit2, $Text2)
    Case 2
    ; Das zweite vom Zufallsprinzip soll das sein
    $Text = "Obst"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Ente"
    GUICtrlSetData($Edit2, $Text2)
    EndSwitch
    EndFunc ;==>Funktion_2

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Wie mache ich es, dass er auf diese Wörter, wie oben " Banane " , " Banana " oder " lange Stange " reagiert, d.h, dass wenn man " Ich will eine Banane " / Ich hätte gerne eine Banane " etc. ( Also überall, wo das Wort Banana drin vorkommt, reagiert er und wählt die Funktion aus? )eingibt, dass er dann die Funktion auswählt?.

    Einmal editiert, zuletzt von White (12. Juni 2011 um 00:37)

    • Offizieller Beitrag

    Schau dir mal StringInStr an, damit kannst du prüfen ob ein String in einem andern vorhanden ist.

  • Also ich habe mir nun die Hilfe angeguckt und bin auf den Entschluss gegekommen, dass es so funktionieren müsste :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1_1 = GUICreate("Form1", 682, 680, 206, 148,$WS_POPUP)
    $Input1 = GUICtrlCreateInput("", 304, 168, 329, 21)
    $Edit1 = GUICtrlCreateEdit("", 304, 248, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit1")
    $Edit2 = GUICtrlCreateEdit("", 304, 320, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit2")
    $suchen = GUICtrlCreateButton("suchen", 304, 200, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $suchen
    switch GuiCtrlRead($Input1)
    Case StringInStr("", "Banane, Banana, lange Stange", 0, 3)
    Funktion_1()
    Case StringInStr("", "Tomate, Tomato, spanische Tomaten", 0, 3)
    Funktion_2()
    Case Else
    MsgBox(0, "Rückmeldung", "Auswertung kann nicht erfolgen. Bitte gebe sie ein anderes Wort ein.")
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func Funktion_1()
    $Text = "Aberglaube"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Langweilig"
    GUICtrlSetData($Edit2, $Text2)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Funktion_2()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    ; Das erste vom Zufallsprinzip soll das sein
    $Text = "Spielzeug"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Droge"
    GUICtrlSetData($Edit2, $Text2)
    Case 2
    ; Das zweite vom Zufallsprinzip soll das sein
    $Text = "Obst"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Ente"
    GUICtrlSetData($Edit2, $Text2)
    EndSwitch
    EndFunc ;==>Funktion_2

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Aber nun habe ich das Problem, dass egal, was ich eingebe, dass er immer Funktion 1 aufruft. Also auch wenn ich etwas mit Tomate eingebe. ;(

    Könnt ihr das bitte mal bei meinem Script so machen, dass es auch funzt?

  • Hi,

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1_1 = GUICreate("Form1", 682, 680, 206, 148);,$WS_POPUP)
    $Input1 = GUICtrlCreateInput("", 304, 168, 329, 21)
    $Edit1 = GUICtrlCreateEdit("", 304, 248, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit1")
    $Edit2 = GUICtrlCreateEdit("", 304, 320, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit2")
    $suchen = GUICtrlCreateButton("suchen", 304, 200, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    MessageLoop ( )

    [/autoit] [autoit][/autoit] [autoit]

    Func MessageLoop ()

    [/autoit] [autoit][/autoit] [autoit]

    Local $sBuffer

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While (TRUE)
    Switch (GUIGetMsg( ))
    Case $suchen
    $sBuffer = GuiCtrlRead($Input1)

    [/autoit] [autoit][/autoit] [autoit]

    If (StringRegExp ($sBuffer, "(Banane)|(Banana)|(lange Stange)")) Then
    Funktion_1()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf (StringRegExp ($sBuffer, "(Tomate)|(Tomato)|(spanische Tomaten)")) Then
    Funktion_2()
    EndIf
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func Funktion_1()
    $Text = "Aberglaube"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Langweilig"
    GUICtrlSetData($Edit2, $Text2)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Funktion_2()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    ; Das erste vom Zufallsprinzip soll das sein
    $Text = "Spielzeug"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Droge"
    GUICtrlSetData($Edit2, $Text2)
    Case 2
    ; Das zweite vom Zufallsprinzip soll das sein
    $Text = "Obst"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Ente"
    GUICtrlSetData($Edit2, $Text2)
    EndSwitch
    EndFunc ;==>Funktion_2

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]


    Gruß
    Greenhorn


  • Ich habe nun noch ein weiteres Problem. Wäre nett, wenn du mir dort auch noch einmal helfen könntest. ;)

    So sieht mein Script aus :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=c:\users\Dennis\pictures\Debuggtool.kxf
    $Form1_1 = GUICreate("Form1", 701, 701, 206, 148)
    $Input1 = GUICtrlCreateInput("", 304, 168, 329, 21)
    $Edit1 = GUICtrlCreateEdit("", 304, 248, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit1")
    $Edit2 = GUICtrlCreateEdit("", 304, 320, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit2")
    $suchen = GUICtrlCreateButton("suchen", 304, 200, 75, 25, $WS_GROUP)
    $Pic1 = GUICtrlCreatePic("Tool.jpg", 0, 0, 700, 700, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    MessageLoop ( )

    [/autoit] [autoit][/autoit] [autoit]

    Func MessageLoop ()

    [/autoit] [autoit][/autoit] [autoit]

    Local $sBuffer

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While (TRUE)
    Switch (GUIGetMsg( ))
    Case $suchen
    $sBuffer = GuiCtrlRead($Input1)

    [/autoit] [autoit][/autoit] [autoit]

    If (StringRegExp ($sBuffer, "(schmeckt)|(Ente)|(lange Stange)")) Then
    Funktion_1()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf (StringRegExp ($sBuffer, "(schmeckt)|(Döner)|(spanische Tomaten)")) Then
    Funktion_2()
    EndIf
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Funktion_1()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    ; Das erste vom Zufallsprinzip soll das sein
    $Text = "Spieeelzeug"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "Deee"
    GUICtrlSetData($Edit2, $Text2)
    Case 2
    ; Das zweite vom Zufallsprinzip soll das sein
    $Text = "eee"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "eeee"
    GUICtrlSetData($Edit2, $Text2)
    Endswitch
    EndFunc ;==>Funktion_2

    [/autoit] [autoit][/autoit] [autoit]

    Func Funktion_2()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    ; Das erste vom Zufallsprinzip soll das sein
    $Text = "xDDD"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "xD"
    GUICtrlSetData($Edit2, $Text2)
    Case 2
    ; Das zweite vom Zufallsprinzip soll das sein
    $Text = "lol"
    GUICtrlSetData($Edit1, $Text)
    $Text2 = "omg"
    GUICtrlSetData($Edit2, $Text2)
    EndSwitch
    EndFunc ;==>Funktion_2

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Ich möchte es so haben, dass er Funktion 1 aufruft, wenn ich z.B. " Schmeckt eigentlich eine Ente " oder so etwas ähnliches schreibt und wenn man schreibt "Hmm und wie schmeckt ein Döner", dass er dann Funktion 2 aufruft. Doch wenn ich nun etwas mit schmeckt und dann Tomate oder Döner eingebe, dann entscheidet er sich nur für eine der beiden Funktion.