mit StringInStr nicht nur nach einen Substring suchen

  • Hallo,

    ich möchte mit StringInStr nicht nur nach einen Substring suchen, sondern mehreren. Also so zu sagen, wenn ich einen String habe, ist entweder "test1" oder "test2" als Substring vorhanden. Mit BitOR hab ich schon versucht aber das geht nicht.

    [autoit]


    GUICreate("Test")
    $input = GUICtrlCreateInput("", 50, 50)
    $check = GUICtrlCreateCheckbox("Test", 20, 100)
    GUISetState(@SW_SHOW)

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

    While True

    $string = GUICtrlRead($input)

    If StringInStr($string, BitOR("test1", "test2")) Then
    GUICtrlSetState($check, $GUI_CHECKED)
    Else
    GUICtrlSetState($check, $GUI_UNCHECKED)
    EndIf

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

    Sleep(100)

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Probier mal das, ist aus dem Gedächtnis geprogt.

    Spoiler anzeigen
    [autoit]

    GUICreate("Test")
    $input = GUICtrlCreateInput("", 50, 50)
    $check = GUICtrlCreateCheckbox("Test", 20, 100)
    GUISetState(@SW_SHOW)

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

    While True

    $string = GUICtrlRead($input)

    If StringInStr($string,"test1") <> 0 or StringInStr($string,"test2") <> 0 Then
    GUICtrlSetState($check, $GUI_CHECKED)
    Else
    GUICtrlSetState($check, $GUI_UNCHECKED)
    EndIf

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

    Sleep(100)

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • genau das wollte ich vermeiden, weil ich habe mehrere Substrings nicht nur die beiden. Das wird mir dann in der Form echt zu lang.

  • Spoiler anzeigen
    [autoit]

    Dim $search[10]
    $search[0] = "test1"
    $search[1] = "test2"
    ;...
    $found = false

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

    For $i = 0 To Ubound($search) -1
    If $search[$i] <> "" AND StringInStr($string, $search[$i]) Then
    $found = true
    ExitLoop
    EndIf
    Next
    If $found == true Then MsgBox(0, "", "found")

    [/autoit]

    naja... is auch net besser aber immerhin, wenn du es unbedingt ohne regulärem ausdruck machen willst

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D