RichEdit Wissenslücke

  • Hallo Leute,

    ich habe folgendes Problem und zwar möchte ich in einem RichEdit mit einer Funktion Spezielle Wörter einfärben, nun habe ich aber keine Ahnung wie ich das machen soll.
    Ich hab einen sehr umständlichen weg mal ausprobiert aber dieser scheint nicht zu funktionieren.

    EDIT: Hab es mal modifiziert ... also ein Wort kann ich jetzt einfärben nur stürzt es beim 2. Wort ab... :/

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <GuiRichEdit.au3>
    #include <Misc.au3>

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

    $Width = @DesktopWidth
    $Height = @DesktopHeight

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

    $hGui = GUICreate("Test",$Width,$Height,0,0,BitOR($WS_POPUP,$WS_MAXIMIZE));,$WS_EX_TOPMOST);Fullscreen Fenster
    #region Datei-Menu
    $Menu_Handle_Datei = GUICtrlCreateMenu("Datei")
    $Menu_Item_Datei = GUICtrlCreateMenuItem("Neu",$Menu_Handle_Datei)
    $Menu_Item_Offnen = GUICtrlCreateMenuItem("Öffnen",$Menu_Handle_Datei)
    $Platzhalter_1 = GUICtrlCreateMenuItem("",$Menu_Handle_Datei)
    $Menu_Item_Speichern = GUICtrlCreateMenuItem("Speichern",$Menu_Handle_Datei)
    $Menu_Item_SpeichernUnter = GUICtrlCreateMenuItem("Speichern unter",$Menu_Handle_Datei)
    $Platzhalter_2 = GUICtrlCreateMenuItem("",$Menu_Handle_Datei)
    $Menu_Item_Beenden = GUICtrlCreateMenuItem("Beenden",$Menu_Handle_Datei)
    #endregion
    #region Bearbeiten-Menu
    $Menu_Handle_Bearbeiten = GUICtrlCreateMenu("Bearbeiten")
    #endregion
    #region Edit-Feld
    $hMain_Edit = _GUICtrlRichEdit_Create($hGui,"",$Width / 6,25,$Width / 1.5,$Height * 0.75,BitOR($ES_AUTOHSCROLL,$ES_AUTOVSCROLL,$ES_MULTILINE,$ES_WANTRETURN))
    #endregion
    GUISetState(@SW_SHOW)

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

    While Sleep(10)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $Menu_Item_Beenden
    _Exit($hGui)
    EndSwitch
    If _GUICtrlRichEdit_IsModified($hMain_Edit) == True Then
    _Color_Words($hMain_Edit,_GUICtrlRichEdit_GetText($hMain_Edit))
    _GUICtrlRichEdit_SetModified($hMain_Edit,False)
    EndIf
    WEnd

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

    Func _Color_Words($hEdit,$Edit)
    Local $wPos
    _GUICtrlRichEdit_SetCharColor($hEdit,0x000000)
    If StringInStr($Edit,"Hallo") > 0 Then
    _Color_All_Words($hEdit,"Hallo",0xFF0000)
    EndIf
    EndFunc

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

    Func _Color_All_Words($hEdit,$Word,$Color)
    Local $SplitWord, $SplitText, $MatchCount = 0
    $SplitText = StringSplit(_GUICtrlRichEdit_GetText($hEdit),"")
    $SplitWord = StringSplit($Word,"")
    For $i = 1 To $SplitText[0] Step 1
    If $SplitText[$i] == $SplitWord[1] Then
    For $ii = 1 To $SplitWord[0] Step 1
    If $SplitText[$i + ($ii - 1)] == $SplitWord[$ii] Then
    $MatchCount += 1
    Else
    $MatchCount = 0
    EndIf
    If $MatchCount == $SplitWord[0] Then
    _GUICtrlRichEdit_SetSel($hEdit,$i - 1,$i - 1 + $SplitWord[0],True)
    _GUICtrlRichEdit_SetCharColor($hEdit,$Color)
    _GUICtrlRichEdit_Deselect($hEdit)
    ;MsgBox(0,"",$Word & " found at " & $i - 1)
    ;ExitLoop
    EndIf
    Next
    EndIf
    Next
    EndFunc

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

    Func _Exit($hG)
    For $i = 255 To 0 Step -10
    WinSetTrans($hG,"",$i)
    Sleep(2)
    Next
    Exit
    EndFunc

    [/autoit]