Kleines Problemchen

  • Guten Tag,

    ich habe nun das Grundgerüst für mein Script fertig, jedoch gibt es noch ein kleines Problemchen ( diesmal habe ich alles durchprobiert ).

    Im Anhang ist der Script und 2 Bilder.

    1. Bild : So sieht es immoment aus :

    - Der eingegebene Text in die Inputbox wird nur durch den Button "senden" gesendet.
    - Der eingegebene Text wird nicht mit in die Edit Box gesendet ...
    - Man muss auf Groß- und Kleinschreibung in der Edit Box achten, damit es erkannt wird.

    2. Bild : So sollte es eigentlich sein :

    - Der eingegebene Text wird auch durch Enter in die Edit Box gesendet.
    - Der eingegebene Text wird mit in die Edit Box gesendet.
    - Man muss nicht auf Groß- und Kleinschreibung in der Edit Box achten, damit es erkannt wird.

    Hier noch einmal der Script :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form2 = GUICreate("", 620, 657, 182, 144, $WS_POPUP)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 633, 529)
    GUICtrlSetData(-1, "")
    $Input1 = GUICtrlCreateInput("", 0, 560, 513, 21)
    $senden = GUICtrlCreateButton("senden", 528, 560, 75, 25, $WS_GROUP)
    $Beenden = GUICtrlCreateButton("Beenden", 528, 608, 75, 25, $WS_GROUP)
    $Pic1 = GUICtrlCreatePic("C:\Users\Dennis\Pictures\Tool Background.jpg", 0, 520, 636, 360, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Beenden
    Exit
    Case $senden
    $sBuffer = GuiCtrlRead($Input1)
    If (StringRegExp ($sBuffer, "(Guten Tag)|(Moin)|(Hallo)")) Then
    Funktion_1()
    EndIf
    EndSwitch
    WEnd

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

    Func Funktion_1()
    Local $iRnd = Random(1, 2, 1)
    Switch $iRnd
    Case 1
    for $i = 5 to 1 Step -1
    $Text3 = GuiCtrlRead($Input1)
    GUICtrlSetData($Edit1, $Text3)
    GUICtrlSetData($Edit1, ".")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "..")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "...")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "....")
    sleep ( 100 )
    GUICtrlSetData($Edit1, ".....")
    next
    $Text = "Guten Tag, mein Name ist White, wie kann ich ihnen helfen?"
    GUICtrlSetData($Edit1, $Text)
    Case 2
    for $i = 5 to 1 Step -1
    $Text3 = GuiCtrlRead($Input1)
    GUICtrlSetData($Edit1, $Text3)
    GUICtrlSetData($Edit1, ".")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "..")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "...")
    sleep ( 100 )
    GUICtrlSetData($Edit1, "....")
    sleep ( 100 )
    GUICtrlSetData($Edit1, ".....")
    next
    $Text = "Guten Tag."
    GUICtrlSetData($Edit1, $Text)
    Endswitch
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von White (12. Juni 2011 um 18:06)

  • Bitte :)

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $hGUI = GUICreate("", 620, 657, -1, -1, $WS_POPUP)
    $hEdit = GUICtrlCreateEdit("", 0, 0, 633, 529)
    $hInput = GUICtrlCreateInput("", 0, 560, 513, 21)
    $hBtnSenden = GUICtrlCreateButton("Senden", 528, 560, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $hBtnBeenden = GUICtrlCreateButton("Beenden", 528, 608, 75, 25, $WS_GROUP)
    $hPic = GUICtrlCreatePic("C:\Users\Dennis\Pictures\Tool Background.jpg", 0, 520, 636, 360, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $hBtnBeenden
    Exit
    Case $hBtnSenden
    $sBuffer = GUICtrlRead($hInput)
    If StringRegExp($sBuffer, "(?i)(Guten Tag)|(Moin)|(Hallo)") Then
    Funktion_1()
    EndIf
    EndSwitch
    WEnd

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

    Func Funktion_1()
    Local $i, $i1, $iRnd = Random(1, 2, 1)
    For $i = 1 To 5
    $sText = GUICtrlRead($hInput)
    GUICtrlSetData($hEdit, $sText)
    For $i1 = 1 To 5
    $sText &= "."
    GUICtrlSetData($hEdit, $sText)
    Sleep(100)
    Next
    Next
    Switch $iRnd
    Case 1
    $sText = "Guten Tag, mein Name ist White, wie kann ich ihnen helfen?"
    Case 2
    $sText = "Guten Tag."
    EndSwitch
    GUICtrlSetData($hEdit, $sText)
    EndFunc ;==>Funktion_1

    [/autoit]

    Sorry hatte das PW von meinem Account hier vergessen, ich bin eigtl nicht hier im Forum...

    Grüße SImon

  • Jo autoBert (sag deinem Enkel(?) mal nen Gruß, man sieht ihn nur noch so wenig auf AIB), stimmt schon, aber er hatte mich privat um die Lösung geben ;)

    Hier noch deinen leicht veränderte Variante:

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $hGUI = GUICreate("", 620, 657, -1, -1, $WS_POPUP)
    $hEdit = GUICtrlCreateEdit("", 0, 0, 633, 529)
    $hInput = GUICtrlCreateInput("", 0, 560, 513, 21)
    $hBtnSenden = GUICtrlCreateButton("Senden", 528, 560, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $hBtnBeenden = GUICtrlCreateButton("Beenden", 528, 608, 75, 25, $WS_GROUP)
    $hPic = GUICtrlCreatePic("C:\Users\Dennis\Pictures\Tool Background.jpg", 0, 520, 636, 360, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $hBtnBeenden
    Exit
    Case $hBtnSenden
    $sBuffer = GUICtrlRead($hInput)
    If StringRegExp($sBuffer, "(?i)(Guten Tag)|(Moin)|(Hallo)") Then
    Funktion_1()
    EndIf
    EndSwitch
    WEnd

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

    Func Funktion_1()
    Local $i, $i1, $iRnd = Random(1, 2, 1)
    For $i = 1 To 5
    $sText = "Ich: "& GUICtrlRead($hInput) & @CRLF
    GUICtrlSetData($hEdit, $sText)
    For $i1 = 1 To 5
    $sText &= "."
    GUICtrlSetData($hEdit, $sText)
    Sleep(100)
    Next
    Next
    $sText = "Ich: "& GUICtrlRead($hInput) & @CRLF & "Computer: "
    Switch $iRnd
    Case 1
    $sText &= "Guten Tag, mein Name ist White, wie kann ich ihnen helfen?"
    Case 2
    $sText &= "Guten Tag."
    EndSwitch
    GUICtrlSetData($hEdit, $sText)
    EndFunc ;==>Funktion_1

    [/autoit]

    Grüße Simon

    Einmal editiert, zuletzt von simon1602 (12. Juni 2011 um 16:46)

  • So, z.B. so kannst du es machen, dass du nicht 500 Funktionen für 500 Fragen / Antworten brauchst:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>

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

    $hGUI = GUICreate("", 620, 657, -1, -1, $WS_POPUP)
    $hEdit = GUICtrlCreateEdit("", 0, 0, 633, 529)
    $hInput = GUICtrlCreateInput("", 0, 560, 513, 21)
    $hBtnSenden = GUICtrlCreateButton("Senden", 528, 560, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $hBtnBeenden = GUICtrlCreateButton("Beenden", 528, 608, 75, 25, $WS_GROUP)
    $hPic = GUICtrlCreatePic("C:\Users\Dennis\Pictures\Tool Background.jpg", 0, 520, 636, 360, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    Dim $aFragen[2][4] = [["Guten Tag", "Moin", "Hallo"],["geht", "gehts", "stehts", "alles klar"]]
    Dim $aAntworten[2][4] = [["Guten Tag, mein Name ist White, wie kann ich ihnen helfen?", "Guten Tag."],["Gut und dir?", "Gut soweit. Und ihnen?", "Das geht dich nichts an!"]]

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $hBtnBeenden
    Exit
    Case $hBtnSenden
    $sText = GUICtrlRead($hInput)
    _say($hEdit, $sText, @UserName)
    $iFragenID = _FrageAnalysieren($sText, $aFragen)
    If @error Then
    If @error = 1 Then
    _say($hEdit, "Du musst schon etwas fragen!", "Computer")
    ElseIf @error = 2 Then
    _say($hEdit, "Das weiß ich leider nicht", "Computer")
    EndIf
    Else
    _say($hEdit, _SucheAntwort($iFragenID), "Computer")
    EndIf

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

    EndSwitch
    WEnd

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

    Func _SucheAntwort($iFragenID)
    ;Copyright by Simon 2011
    ;Returns an answer for the QuesttionID ($iFragenID)

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

    While 1
    $iRnd = Random(0, UBound($aAntworten, 2) - 1, 1)
    If $aAntworten[$iFragenID][$iRnd] <> "" Then ExitLoop
    WEnd

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

    Return $aAntworten[$iFragenID][$iRnd]
    EndFunc ;==>_SucheAntwort

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

    Func _Say($hEdit, $sText, $sPerson)
    ;Copyright by Simon 2011
    ;Appends the Text and the Persion in the Edit-Controll

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

    $hWnd = GUICtrlGetHandle($hEdit)

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

    Local $iLength = _GUICtrlEdit_GetTextLen($hWnd)
    _GUICtrlEdit_SetSel($hWnd, $iLength, $iLength)
    _SendMessage($hWnd, $EM_REPLACESEL, True, $sPerson & ": " & $sText & @CRLF, 0, "wparam", "wstr")
    EndFunc ;==>_Say

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

    Func _FrageAnalysieren($sText, $aFragen)
    ;Copyright by Simon 2011
    ;Searches wether $aFragen contains $sText
    ;Return Values:
    ; Succes: The ID for the Question
    ; $sText is empty: -1 and sets @Error to 1
    ; $nothing found: -1 and sets @Error to 1

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

    Local $i, $i1

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

    If $sText <> "" Then
    For $i = 0 To UBound($aFragen) - 1
    For $i1 = 0 To UBound($aFragen, 2) - 1
    If StringInStr($sText, $aFragen[$i][$i1], 2) Then
    Return $i
    EndIf
    Next
    Next
    Else
    Return SetError(1, 0, -1)
    EndIf
    Return SetError(2, 0, -1)
    EndFunc ;==>_FrageAnalysieren

    [/autoit]

    Grüße Simon