also ich möchte ger aus nem RichEdit text rausfiltern Also z.B. im Rich Steht "Hallo wie gehts" und ich möchte das der mir immer nur das wie sucht und mir sag wo es ist! Wenn es nit in Spalten geht kann es auch nur zeilen angeben, aber wenn es auch noch die spalte angibt währe mir lieber
Und dann hab ich noch ne Frage zum RichEdit, ich wollte mal wissen wie man es machen das man da bilder einfügen kann
Ich weiß ich bin eine Nervensäge, aber ich möchte eben gern Proggen
Danke für eure hilfe
RicEdit text filtern
-
- [ offen ]
-
Jam00 -
10. Dezember 2008 um 21:29 -
Geschlossen -
Erledigt
-
-
Hallo
Weiß niemand was
-
RichEdit mit Bildern: http://www.autoitscript.com/forum/index.php?showtopic=83763
Zum suchen schau dir mal EM_FINDTEXTEX an -
Irgendwei kapier ich das nit
-
was kapierst du nicht?
-
Dieses EM_FINDTEXTEX wie das funktioniert
-
Teste mal das:
Spoiler anzeigen
[autoit];===============================================================================
[/autoit] [autoit][/autoit] [autoit]
;
; Function Name: _GUICtrlRichEdit_FindTextEx
; Description:: Sucht nach dem angegebenen Text
; Parameter(s): $h_RichEdit - RichEdit
; $SuchText - Text zum suchen
; $behavior - Suchverhalten $FR_DOWN, $FR_MATCHALEFHAMZA, $FR_MATCHCASE, $FR_MATCHDIAC, $FR_MATCHKASHIDA, $FR_WHOLEWORD
; $StartPos - [Optional] Anfangsposition (Standard: Anfang des Textes)
; $EndPos - [Optional] Endposition (Standard: Ende des Textes)
; $giveArray - [Optional] ein array mit Anfang und Ende des Suchstrings geben
; (Standard: Nur den Anfang)
; Requirement(s): RichEdit
; Return Value(s): Anfangsposition des Suchstrings oder array mit Anfang und Ende
; Author(s): Prog@ndy
;
;===============================================================================
;Func _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,$behavior=0,$StartPosition=0,$EndPosition=-1,$giveArray=0)
[/autoit] [autoit][/autoit] [autoit]
Local $FINDTEXTEX = DllStructCreate($tagFINDTEXTEX); suchpositionen:
[/autoit] [autoit][/autoit] [autoit]
Local $EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEX, $UNICODE=""
If @AutoItUnicode Then
$EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEXW
$UNICODE = "w"
EndIf
DllStructSetData($FINDTEXTEX,1,$StartPosition) ; Anfang: 0 = von ganz oben
DllStructSetData($FINDTEXTEX,2,$EndPosition) ; Ende: -1 = bis ganz ans Ende
Local $structSuchText = DllStructCreate($UNICODE & "char[" & StringLen($SuchText)+1 & "]")
DllStructSetData($structSuchText,1,$SuchText)
DllStructSetData($FINDTEXTEX,3,DllStructGetPtr($structSuchText)) ; desn suchtext in die struct aufnehmenLocal $start = _SendMessage($h_RichEdit,$EM_FINDTEXTEXUNICHECK,$behavior,DllStructGetPtr($FINDTEXTEX),0,"dword","ptr")
[/autoit]
If $giveArray Then
Local $array[2] = [DllStructGetData($FINDTEXTEX,4),DllStructGetData($FINDTEXTEX,5)]
Return $array
EndIf
Return $start
EndFunc -
Danke
-
funktioniert es bei dir? -> dann kann ichs in der neuen Version einbauen
Ähhm, hab grad nen Fehler gefundenVerbesser ich gleich.
-
Irgendwie geht da nix!
Spoiler anzeigen
[autoit]#include <GuiRichEdit.au3>
[/autoit] [autoit][/autoit] [autoit]$hgui = GUICreate("Rich Edit Example", 500, 550)
[/autoit] [autoit][/autoit] [autoit]$h_RichEdit = _GUICtrlRichEdit_Create($hgui, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
[/autoit] [autoit][/autoit] [autoit]$lResult = _SendMessage($h_RichEdit, $EM_SETEVENTMASK, 0, BitOR($ENM_REQUESTRESIZE, $ENM_LINK, $ENM_DROPFILES, $ENM_KEYEVENTS, $ENM_MOUSEEVENTS))
[/autoit] [autoit][/autoit] [autoit]
$button = GUICtrlCreateButton("Exit", 100, 460, 100, 25)
$button1 = GUICtrlCreateButton("Test", 300, 460, 100, 25)_GUICtrlRichEdit_SetText($h_RichEdit,"Hi!" & @CRLF & "Line2" & @CRLF & "Line3" & @CRLF)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
_GUICtrlRichEdit_AppendText($h_RichEdit,"Line4" & @CRLF & "Line5" & @CRLF & "Line6" & @CRLF)
_GUICtrlRichEdit_SetSel($h_RichEdit, 7, 12)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,0)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,1)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,2)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,3)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,4)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,5)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button
Exit
Case $button1
Call ("_GUICtrlRichEdit_FindTextEx")
EndSwitch
WEnd;Prog@ndy
[/autoit]
Func _GUICtrlRichEdit_SetLineColor($h_RichEdit,$Color,$Line=-1)
; Start der Zeile holen
Local $LineStart = _GUICtrlRichEdit_LineIndex($h_RichEdit,$Line)
; Länge der Zeile holen
Local $LineLength = _GUICtrlRichEdit_LineLength($h_RichEdit,$LineStart)
; alte Markierung speichern
Local $OldSel = _GUICtrlRichEdit_GetSelection($h_RichEdit)
; Zeile markieren
_GUICtrlRichEdit_SetSel($h_RichEdit,$LineStart,$LineStart+$LineLength,1)
; Farbe für Markierung setzen
_GUICtrlRichEdit_SetFontColor($h_RichEdit,__GCR_ColorConvert($Color),True)
EndFunc
$SuchText = "Hi!"
Func _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,$StartPosition=0,$EndPosition=-1,$giveArray=0)
MsgBox (0,"","")
Local $FINDTEXTEX = DllStructCreate($tagFINDTEXTEX)
; suchpositionen:
Local $EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEX, $UNICODE=""
If @AutoItUnicode Then
$EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEXW
$UNICODE = "w"
EndIf
MsgBox (0,"",$EM_FINDTEXTEX)
DllStructSetData($FINDTEXTEX,1,0) ; Anfang: 0 = von ganz oben
DllStructSetData($FINDTEXTEX,2,-1) ; Ende: -1 = bis ganz ans Ende
Local $structSuchText = DllStructCreate($UNICODE & "char[" & StringLen($SuchText)+1 & "]")
DllStructSetData($structSuchText,1,$SuchText)
DllStructSetData($FINDTEXTEX,3,DllStructGetPtr($structSuchText)) ; desn suchtext in die struct aufnehmen
Local $start = _SendMessage($h_RichEdit,$EM_FINDTEXTEXUNICHECK,DllStructGetPtr($FINDTEXTEX))
If $giveArray And $start>=0 Then
Local $array[2] = [DllStructGetData($FINDTEXTEX,4),DllStructGetData($FINDTEXTEX,5)]
If $array[1] Then Return $array
EndIf
Return $start
EndFuncDie MSGBOXen hab ich da rein gemacht, damit ich sehe was pasiert, aber er startet garnicht die Func
-
Erstens hatte die fnc nen fehler -< hab ich gefixt.
[autoit]
2. musst du der Funktion RichEdit und suchtext übergeben...
//Edit: findet aber irgendwie nichts...
//Edit: Jetzt gehts. Aufruf:$SuchText = InputBox("suche","suche")
[/autoit]
$ret = _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,1)
MsgBox(0, '', $ret)
Die funktion im Post oben. -
wenn ich es starte zeigt der mit unten -->loaded MSFTEDIT.DLL, Unicode used also er started es aber zeigt orangen text an
Wenn ich das starte
Spoiler anzeigen
[autoit]#include <GuiRichEdit.au3>
[/autoit] [autoit][/autoit] [autoit]$hgui = GUICreate("Rich Edit Example", 500, 550)
[/autoit] [autoit][/autoit] [autoit]$h_RichEdit = _GUICtrlRichEdit_Create($hgui, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
[/autoit] [autoit][/autoit] [autoit]$lResult = _SendMessage($h_RichEdit, $EM_SETEVENTMASK, 0, BitOR($ENM_REQUESTRESIZE, $ENM_LINK, $ENM_DROPFILES, $ENM_KEYEVENTS, $ENM_MOUSEEVENTS))
[/autoit] [autoit][/autoit] [autoit]
$button = GUICtrlCreateButton("Exit", 100, 460, 100, 25)
$button1 = GUICtrlCreateButton("Test", 300, 460, 100, 25)_GUICtrlRichEdit_SetText($h_RichEdit,"Hi!" & @CRLF & "Line2" & @CRLF & "Line3" & @CRLF)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
_GUICtrlRichEdit_AppendText($h_RichEdit,"Line4" & @CRLF & "Line5" & @CRLF & "Line6" & @CRLF)
_GUICtrlRichEdit_SetSel($h_RichEdit, 7, 12)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,0)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,1)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,2)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,3)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,4)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,5)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button
Exit
Case $button1
$SuchText = InputBox("suche","suche")
$ret = _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,1)
MsgBox(0, '', $ret)
EndSwitch
WEnd;Prog@ndy
[/autoit] [autoit][/autoit] [autoit]
Func _GUICtrlRichEdit_SetLineColor($h_RichEdit,$Color,$Line=-1)
; Start der Zeile holen
Local $LineStart = _GUICtrlRichEdit_LineIndex($h_RichEdit,$Line)
; Länge der Zeile holen
Local $LineLength = _GUICtrlRichEdit_LineLength($h_RichEdit,$LineStart)
; alte Markierung speichern
Local $OldSel = _GUICtrlRichEdit_GetSelection($h_RichEdit)
; Zeile markieren
_GUICtrlRichEdit_SetSel($h_RichEdit,$LineStart,$LineStart+$LineLength,1)
; Farbe für Markierung setzen
_GUICtrlRichEdit_SetFontColor($h_RichEdit,__GCR_ColorConvert($Color),True)
EndFunc
Func _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,$behavior=0,$StartPosition=0,$EndPosition=-1,$giveArray=0)
Local $FINDTEXTEX = DllStructCreate($tagFINDTEXTEX); suchpositionen:
[/autoit] [autoit][/autoit] [autoit]
Local $EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEX, $UNICODE=""
If @AutoItUnicode Then
$EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEXW
$UNICODE = "w"
EndIf
DllStructSetData($FINDTEXTEX,1,$StartPosition) ; Anfang: 0 = von ganz oben
DllStructSetData($FINDTEXTEX,2,$EndPosition) ; Ende: -1 = bis ganz ans Ende
Local $structSuchText = DllStructCreate($UNICODE & "char[" & StringLen($SuchText)+1 & "]")
DllStructSetData($structSuchText,1,$SuchText)
DllStructSetData($FINDTEXTEX,3,DllStructGetPtr($structSuchText)) ; desn suchtext in die struct aufnehmenLocal $start = _SendMessage($h_RichEdit,$EM_FINDTEXTEXUNICHECK,$behavior,DllStructGetPtr($FINDTEXTEX),0,"dword","ptr")
[/autoit]
If $giveArray Then
Local $array[2] = [DllStructGetData($FINDTEXTEX,4),DllStructGetData($FINDTEXTEX,5)]
Return $array
EndIf
Return $start
EndFunc
hängt sich AutoIt auf, also wenn ich auf Test klicke -
welche version verwendest du?
bei mir läusft das ohne Probleme durch... -
autoit-v3.2.13.9.exe
Stimmt da vielcih was mit der DLL nit, hab ich die überhaubt? -
die DLL müsste stimmen, ist bei XP dabei. und wenn dransteht, dass sie geladen ist, dann ist sie das auch
versuch mal die zeilen zu löschen:Spoiler anzeigen
[autoit]If @AutoItUnicode Then
[/autoit]
$EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEXW
$UNICODE = "w"
EndIf
und wenn du schon die beta verwendest, dann doch de neusete. 3.2.13.12 -
Hä wie
Schik iir doch mal bitte den kompletten script den du jetzt hast
-
ich hab genau dein Beispile, nur ohne @AutoItUicode, wobei es bei mir auch mit funktioniert
Spoiler anzeigen
[autoit]#include <GuiRichEdit.au3>
[/autoit] [autoit][/autoit] [autoit]$hgui = GUICreate("Rich Edit Example", 500, 550)
[/autoit] [autoit][/autoit] [autoit]$h_RichEdit = _GUICtrlRichEdit_Create($hgui, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
[/autoit] [autoit][/autoit] [autoit]$lResult = _SendMessage($h_RichEdit, $EM_SETEVENTMASK, 0, BitOR($ENM_REQUESTRESIZE, $ENM_LINK, $ENM_DROPFILES, $ENM_KEYEVENTS, $ENM_MOUSEEVENTS))
[/autoit] [autoit][/autoit] [autoit]
$button = GUICtrlCreateButton("Exit", 100, 460, 100, 25)
$button1 = GUICtrlCreateButton("Test", 300, 460, 100, 25)_GUICtrlRichEdit_SetText($h_RichEdit,"Hi!" & @CRLF & "Line2" & @CRLF & "Line3" & @CRLF)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
_GUICtrlRichEdit_AppendText($h_RichEdit,"Line4" & @CRLF & "Line5" & @CRLF & "Line6" & @CRLF)
_GUICtrlRichEdit_SetSel($h_RichEdit, 7, 12)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,0)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,1)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,2)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0xFF0000,3)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x00FF00,4)
_GUICtrlRichEdit_SetLineColor($h_RichEdit,0x0000FF,5)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button
Exit
Case $button1
$SuchText = InputBox("suche","suche")
$ret = _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,1)
MsgBox(0, '', $ret)
EndSwitch
WEnd;Prog@ndy
[/autoit] [autoit][/autoit] [autoit]
Func _GUICtrlRichEdit_SetLineColor($h_RichEdit,$Color,$Line=-1)
; Start der Zeile holen
Local $LineStart = _GUICtrlRichEdit_LineIndex($h_RichEdit,$Line)
; Länge der Zeile holen
Local $LineLength = _GUICtrlRichEdit_LineLength($h_RichEdit,$LineStart)
; alte Markierung speichern
Local $OldSel = _GUICtrlRichEdit_GetSelection($h_RichEdit)
; Zeile markieren
_GUICtrlRichEdit_SetSel($h_RichEdit,$LineStart,$LineStart+$LineLength,1)
; Farbe für Markierung setzen
_GUICtrlRichEdit_SetFontColor($h_RichEdit,__GCR_ColorConvert($Color),True)
EndFunc
Func _GUICtrlRichEdit_FindTextEx($h_RichEdit,$SuchText,$behavior=0,$StartPosition=0,$EndPosition=-1,$giveArray=0)
Local $FINDTEXTEX = DllStructCreate($tagFINDTEXTEX); suchpositionen:
[/autoit] [autoit][/autoit] [autoit]
Local $EM_FINDTEXTEXUNICHECK = $EM_FINDTEXTEX, $UNICODE=""
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($FINDTEXTEX,1,$StartPosition) ; Anfang: 0 = von ganz oben
DllStructSetData($FINDTEXTEX,2,$EndPosition) ; Ende: -1 = bis ganz ans Ende
Local $structSuchText = DllStructCreate($UNICODE & "char[" & StringLen($SuchText)+1 & "]")
DllStructSetData($structSuchText,1,$SuchText)
DllStructSetData($FINDTEXTEX,3,DllStructGetPtr($structSuchText)) ; desn suchtext in die struct aufnehmenLocal $start = _SendMessage($h_RichEdit,$EM_FINDTEXTEXUNICHECK,$behavior,DllStructGetPtr($FINDTEXTEX),0,"dword","ptr")
[/autoit]
If $giveArray Then
Local $array[2] = [DllStructGetData($FINDTEXTEX,4),DllStructGetData($FINDTEXTEX,5)]
Return $array
EndIf
Return $start
EndFunc -
Du kannst dir doch auch was mit _StringBetween() zusammenbasteln... Du könntest dir dann das mit dem Array unutze machen:
Verteile jedes Wort in ein Element des Arrays und such darin das "wie", dann hast du auch die Nummer.Achtung! beachte aber, dass du GUICtrlRead() verwenden musst.
[autoit]
Tipp:$String = GUICtrlRead($Edit1, 0)
[/autoit]
dann kannst du den String auch so benutzen... -
_StringBetween() ? Hab ich noch nie gehört!
-
schau es dir mal an,das wäre vllt. das richtige! s. Hilfe
-