Wow, danke für die schnelle Hilfe !!!
Ich werde das direkt probieren.
Kannst du mir die Return $GUI_RUNDEFMSG erläutern ?
Tim
Wow, danke für die schnelle Hilfe !!!
Ich werde das direkt probieren.
Kannst du mir die Return $GUI_RUNDEFMSG erläutern ?
Tim
Danke für deine Antwort und deine Mühe! Ich würde mich sehr über eine Antwort von dir freuen, da ich an dieser Stelle überfordert bin. Da kann ich machen was ich will..
Ich freue mich schon rießig auf deine Erkenntnisse !
Grüße Tim
Danke, ich freue mich schon auf deine Antwort !
LG
Hier im Anhang noch die Syntax.ini, hatte ich vergessen.
Bitte aus .txt -> .ini machen
Danke,
dein Beispiel funktioniert super. Wenn ich es in mein Script rein kopiere, geht es nicht mehr...
Hier mein Script. Meine Version ist die 3.3.12.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=SQL.ico
#AutoIt3Wrapper_Outfile=SQL Highlighter.exe
#AutoIt3Wrapper_Res_Fileversion=2.0.0.13
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#comments-start
TODO:
#comments-end
[/autoit] [autoit][/autoit] [autoit]#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <array.au3>
#include <misc.au3>
global $count = 0
global $iCpStart = 200
global $merker = 0
global $size
global $inhalt
global $titel = "SQL Syntax Highlighter"
global $sBuffer
global $laengeWort
global $ininame = "syntax.ini"
global $inipfad = @TempDir&"\"&$ininame
global $version = FileGetVersion(@ScriptFullPath)
FileInstall("syntax.ini",$inipfad,1)
[/autoit] [autoit][/autoit] [autoit]if not FileExists(@TempDir&"\"&$ininame) then
msgbox(16,"Fehler","Die Initialisierungsdatei konnte nicht gefunden werden:"&@CRLF&$inipfad)
Exit
EndIf
Global $Inisectionnames = IniReadSectionNames($inipfad)
[/autoit] [autoit][/autoit] [autoit]$sektion1 = IniReadSection ($inipfad, $Inisectionnames[1] )
$sektion2 = IniReadSection ($inipfad, $Inisectionnames[2] )
$sektion3 = IniReadSection ($inipfad, $Inisectionnames[3] )
$sektion4 = IniReadSection ($inipfad, $Inisectionnames[4] )
$sektion5 = IniReadSection ($inipfad, $Inisectionnames[5] )
$sektion6 = IniReadSection ($inipfad, $Inisectionnames[6] )
$sektion7 = IniReadSection ($inipfad, $Inisectionnames[7] )
$sektion8 = IniReadSection ($inipfad, $Inisectionnames[8] )
$sektion9 = IniReadSection ($inipfad, $Inisectionnames[9] )
$sektion10 = IniReadSection ($inipfad,$Inisectionnames[10] )
global $syn1[$sektion1[0][0]]
for $durch = 0 to $sektion1[0][0]-1
$syn1[$durch] = $sektion1[$durch+1][1]
Next
global $syn2[$sektion2[0][0]]
for $durch = 0 to $sektion2[0][0]-1
$syn2[$durch] = $sektion2[$durch+1][1]
Next
global $syn3[$sektion3[0][0]]
for $durch = 0 to $sektion3[0][0]-1
$syn3[$durch] = $sektion3[$durch+1][1]
Next
global $syn4[$sektion4[0][0]]
for $durch = 0 to $sektion4[0][0]-1
$syn4[$durch] = $sektion4[$durch+1][1]
Next
global $syn5[$sektion5[0][0]]
for $durch = 0 to $sektion5[0][0]-1
$syn5[$durch] = $sektion5[$durch+1][1]
Next
global $syn6[$sektion6[0][0]]
for $durch = 0 to $sektion6[0][0]-1
$syn6[$durch] = $sektion6[$durch+1][1]
Next
global $syn7[$sektion7[0][0]]
for $durch = 0 to $sektion7[0][0]-1
$syn7[$durch] = $sektion7[$durch+1][1]
Next
global $syn8[$sektion8[0][0]]
for $durch = 0 to $sektion8[0][0]-1
$syn8[$durch] = $sektion8[$durch+1][1]
Next
global $syn9[$sektion9[0][0]]
for $durch = 0 to $sektion9[0][0]-1
$syn9[$durch] = $sektion9[$durch+1][1]
Next
global $syn10[$sektion10[0][0]]
for $durch = 0 to $sektion10[0][0]-1
$syn10[$durch] = $sektion10[$durch+1][1]
Next
$hMainGUI = GUICreate($titel, 700, 400, -1, -1,$WS_SIZEBOX + $WS_SYSMENU)
$filemenu = GUICtrlCreateMenu("&Datei")
$fileitem_offnen = GUICtrlCreateMenuitem("Ö&ffnen", $filemenu)
$fileitem_save = GUICtrlCreateMenuitem("&Speichern", $filemenu)
$highlightingmenu = GUICtrlCreateMenu("Highlighting")
$fileitem_check = GUICtrlCreateMenuitem("Aktualisieren", $highlightingmenu)
$fileitem_showsyntax = GuictrlCreateMenuItem("Schlüsselwörter",$highlightingmenu)
$infomenu = GUICtrlCreateMenu("Hilfe")
$fileitem_info = GUICtrlCreateMenuitem("Über SQL Highlighter", $infomenu)
$hRichEdit = _GUICtrlRichEdit_Create($hMainGUI, "", 0, 0, 700, 380, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
_GUICtrlRichEdit_SetFont($hRichEdit, 15, "CALIBRI")
GUIRegisterMsg($WM_SIZE,"WM_SIZE")
GUISetState()
While True
[/autoit] [autoit][/autoit] [autoit]$aktuelle_l = StringLen(_GUICtrlRichEdit_GetText($hRichEdit))
sleep(50)
_GUICtrlRichEdit_SetFont($hRichEdit, 15, "CALIBRI")
$aktuelle_2 = StringLen(_GUICtrlRichEdit_GetText($hRichEdit))
if $aktuelle_l <> $aktuelle_2 then space()
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
Exit
Case $iMsg = $fileitem_save
save()
Case $iMsg = $fileitem_offnen
open()
Case $iMsg = $fileitem_check
prufung(1)
Case $iMsg = $fileitem_info
about()
Case $iMsg = $fileitem_showsyntax
showsyn()
EndSelect
WEnd
func space()
[/autoit] [autoit][/autoit] [autoit]If WinGetState($titel) = 15 then
[/autoit] [autoit][/autoit] [autoit]$arr = _GUICtrlRichEdit_GetSel($hRichEdit) ;schauen ob nichts mrkiert ist
if $arr[0] == $arr[1] then
$letztes = $arr[0]
$iCpStart = _GUICtrlRichEdit_GetCharPosOfPreviousWord($hRichEdit, $letztes) ;gibt startposition meines letztes wortes aus
;~ ConsoleWrite($iCpStart&"-"&$arr&@CRLF)
$wort = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $iCpStart, $letztes) ;text in der position auslesen
;=Überprüfungen um die Abfrage zu verkürzen
$laengeWort = stringlen($wort)
;======Wenn erster Buchstabe ein ' dann nur den Text verändern
$ersterBuchstabe = StringLeft($wort,1)
if ($ersterBuchstabe ="'") and ($laengeWort > 1) then
$wort = StringRight($wort,$laengeWort-1)
$iCpStart = $iCpStart + 1
endif
;======Wenn erster Buchstabe ein ' dann nur den Text verändern
$wort = StringReplace($wort," ","")
$wort = StringReplace($wort,");",";")
$wort = StringReplace($wort,"';",";")
$wort = StringReplace($wort,'";',";")
$wort = StringReplace($wort,'")',")")
$wort = StringReplace($wort,",'","'")
;~ MsgBox(0,"",$wort)
ConsoleWrite($wort&@CRLF)
;===================================================================================
If $laengeWort < 20 then ;abfrage wann überhaupt gehighlightet wird
if _ArraySearch($syn1,$wort) <> -1 Then ;Ob das Wort in liste synb ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn1[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn2,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn2[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn3,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn3[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn4,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn4[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn5,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn5[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif StringIsDigit($wort) Then ;Obb das Wort eine Zahl ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn6[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn7,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn7[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn8,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn8[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn9,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn9[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
elseif _ArraySearch($syn10,$wort) <> -1 Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $syn10[0]) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
else;wenn das wort nicht drinnen ist, wird wieder zurück geschrieben
if $merker == 0 then
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, 0x000000) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
EndIf
endif
;~ MsgBox(0,"","nochmal")
EndIf ;Ende der Abfrage ob gehighlightet wird
$merker = 0 ;zurücksetzten bevor es erneut durch geht
;===================================================================================
Else ; = error meldung wenn etwas markiert
MsgBox(16,"not","Muss das sein ?"&@CRLF&"Fehlernummer: 0x01")
endif
EndIf
EndFunc
Func prufung($quelle)
if $quelle = 1 then $inhalt = _GUICtrlRichEdit_GetText($hRichEdit)
$zeichenzahl = StringLen($inhalt)
;~ MsgBox(0,"",$zeichenzahl)
for $zahler = 0 to $zeichenzahl
[/autoit] [autoit][/autoit] [autoit]_GUICtrlRichEdit_SetSel($hRichEdit, $zahler,$zahler) ;text anfang setzten
$zeichen = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $zahler,$zahler+1)
ConsoleWrite($zeichen)
if $zeichen <> " " then space() ;Wenn das Zeichen ein Leerzeichen ist, wird nicht geprüft
Next
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func dataopen()
[/autoit] [autoit][/autoit] [autoit];==========Daten rein laden
_GUICtrlRichEdit_SetText($hRichEdit,$inhalt)
_GUICtrlRichEdit_SetSel($hRichEdit, 0,-1) ;text markieren
_GUICtrlRichEdit_SetFont($hRichEdit, 15, "CALIBRI")
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
;==========Daten rein laden
prufung(0)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func about()
MsgBox(64,"Über " & $titel,"Autor:"&@TAB&"Tim Erler"&@CRLF&"Erstellt:"&@TAB&"11.03.2015"&@CRLF&"Version:"&@TAB&$version&@CRLF&@CRLF&"Info:"&@CRLF&$titel&" bietet die Möglichkeit die SQL Syntax farblich hervorzuheben um Code komfortabler zu schreiben und Fehler schneller zu erkennen.");
EndFunc
[/autoit] [autoit][/autoit] [autoit]func WM_SIZE($hWnd, $iMsg, $wParam, $lParam)
local $iWidth = _WinAPI_LoWord($lParam)
local $iHeight = _WinAPI_HiWord($lParam)
if WinGetState($titel) = 15 then _WinAPI_MoveWindow($hRichEdit, 2, 2, $iWidth-4,$iHeight - 4)
Return 0
EndFunc
func save()
$path = FileSaveDialog("Speicherort wählen",@DesktopDir,"SQL Script (*.sql)")
if @error then
Else
if (FileWrite($path&".sql",_GUICtrlRichEdit_GetText($hRichEdit)) == 0) then
MsgBox(16,"Fehler","Es ist ein Fehler beim Speichern der Datei aufgetreten!")
Else
MsgBox(64,"Speichern","SQL-Datei wurde erfolgreich gespeichert.")
Endif
EndIf
EndFunc
func open()
$path = FileOpenDialog("Datei öffnen",@DesktopDir,"SQL Script (*.sql)|Text Datei (*.txt)")
if @error then
Else
$inhalt = FileRead($path)
if @error then
MsgBox(16,"Fehler","Es ist ein Fehler beim Speichern der Datei aufgetreten!")
Else
dataopen()
Endif
EndIf
EndFunc
func showsyn()
[/autoit] [autoit][/autoit] [autoit]Local $completearray[28][10]
[/autoit] [autoit][/autoit] [autoit]for $i1 = 0 to UBound($syn1)-1
$completearray[$i1][0] = $syn1[$i1]
Next
for $i1 = 0 to UBound($syn2)-1
$completearray[$i1][1] = $syn2[$i1]
Next
for $i1 = 0 to UBound($syn3)-1
$completearray[$i1][2] = $syn3[$i1]
Next
for $i1 = 0 to UBound($syn4)-1
$completearray[$i1][3] = $syn4[$i1]
Next
_ArrayDisplay($aArr,"Schlüsselwörter",Default,32,Default,$Inisectionnames[1]&"|"&$Inisectionnames[2]&"|"&$Inisectionnames[3]&"|"&$Inisectionnames[4])
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]Hallo,
ich habe ein Problem mit _ArrayDisplay.
Mein Aufruf sieht so aus:
[autoit]_ArrayDisplay($completearray,"Schlüsselwörter",Default,32,Default,"text1|text2|text3|text4"
[/autoit]
und meine Ausgabe so: [Blockierte Grafik: http://img4.fotos-hochladen.net/thumbnail/array8n1j4eghky_thumb.jpg]
könnt Ihr mir sagen was ich falsch mache ? Ich würde gerne die das Listenelement auf der ganzen GUI sehen, und nicht nur 100x100 Pixel ![]()
Grüße
Das Script welches ich geschrieben habe funktioniert soweit schon nicht ganz schlecht ![]()
Nur würde ich es gerne beim Einlesen noch etwas geschwindigkeitsoptimiert haben wollen, aber dafür bin ich wohl zu doof ![]()
Einen Bug den ich nicht rausbekomme, der aber manchmal da ist, ist wenn ich mit enter in eine neue Zeile gehe, dann ist meine Schrift plötzlich wieder kleiner und nicht wie ich sie von anfang an gesetzt habe. Das verwirrt mich. Es passiert eben nur manchmal.. Das Highlighting geht dann aber dennoch..
#comments-start
TODO:
#comments-end
[/autoit] [autoit][/autoit] [autoit]#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <array.au3>
#include <misc.au3>
global $count = 0
global $iCpStart = 200
global $merker = 0
global $size = 6
global $inhalt
global $titel = "SQL Syntax Highlighter"
global $sBuffer
global $color1 = 0xc6178a
global $syn1[$size]
$syn1[0] = "SELECT"
$syn1[1] = "FROM"
$syn1[2] = "WHERE"
$syn1[3] = "ORDER"
$syn1[4] = "BY"
global $color2 = 0x66c051
global $syn2[$size]
$syn2[0] = "OR"
$syn2[1] = "AND"
$syn2[2] = "NOT"
global $color3 = 0xde635a
global $syn3[$size]
$syn3[0] = "IN"
$syn3[1] = "OUTER"
$syn3[2] = "INNER"
$syn3[3] = "JOIN"
$syn3[4] = "LIKE"
$syn3[5] = "BETWEEN"
global $color4 = 0x636363
global $syn4[$size]
$syn4[0] = "IS"
$syn4[1] = "NULL"
$syn4[2] = "="
$syn4[3] = "<"
$syn4[4] = ">"
global $color5 = 0x0034f6
global $syn5[$size]
$syn5[0] = "("
$syn5[1] = ")"
$syn5[2] = ";"
$syn5[3] = '"'
$syn5[4] = "'"
$hGui = GUICreate($titel, 700, 460, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "", 10, 10, 680, 400, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
_GUICtrlRichEdit_SetFont($hRichEdit, 15, "CALIBRI")
$save = GUICtrlCreateButton("&Speichern",10,420,100,30)
$open = GUICtrlCreateButton("Ö&ffnen",120,420,100,30)
$labeltim = GUICtrlCreateLabel("(c) Tim Erler",630,430,80,20)
GUISetState()
;~ HotKeySet(" ","space")
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]$aktuelle_l = StringLen(_GUICtrlRichEdit_GetText($hRichEdit))
sleep(50)
$aktuelle_2 = StringLen(_GUICtrlRichEdit_GetText($hRichEdit))
if $aktuelle_l <> $aktuelle_2 then space()
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
Exit
Case $iMsg = $save
if FileWrite(FileOpenDialog("Speicherort wählen",@DesktopDir,"Textdateien (*.txt)")&".txt",_GUICtrlRichEdit_GetText($hRichEdit)) Then
MsgBox(0,"Speichern","Wurde erfolgreich gespeichert")
Else
MsgBox(0,"Speichern","Fehler beim Speichern")
EndIf
Case $iMsg = $open
$inhalt = FileRead(FileOpenDialog("Datei öffnen",@DesktopDir,"Textdateien (*.txt)"))
if @error = 1 Then
MsgBox(0,"Speichern","Fehler beim Öffnen")
Else
dataopen()
EndIf
EndSelect
WEnd
func space()
[/autoit] [autoit][/autoit] [autoit]If WinGetState($titel) = 15 then
[/autoit] [autoit][/autoit] [autoit]$arr = _GUICtrlRichEdit_GetSel($hRichEdit) ;schauen ob nichts mrkiert ist
if $arr[0] == $arr[1] then
$letztes = $arr[0]
$iCpStart = _GUICtrlRichEdit_GetCharPosOfPreviousWord($hRichEdit, $letztes) ;gibt startposition meines letztes wortes aus
ConsoleWrite($iCpStart&"-"&$arr&@CRLF)
$wort = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $iCpStart, $letztes) ;text in der position auslesen
$wort = StringReplace($wort," ","")
$wort = StringReplace($wort,");",";")
$wort = StringReplace($wort,"';",";")
$wort = StringReplace($wort,'";',";")
;~ MsgBox(0,"",$wort)
ConsoleWrite($wort&@CRLF)
;===================================================================================
for $counter = 0 to $size-1 ;Eines minus weil array bei 0 beginnt
if $wort = $syn1[$counter] Then ;Ob das Wort in liste synb ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color1) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
ExitLoop
elseif $wort = $syn2[$counter] Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color2) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
ExitLoop
elseif $wort = $syn3[$counter] Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color3) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
ExitLoop
elseif $wort = $syn4[$counter] Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color4) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
ExitLoop
elseif $wort = $syn5[$counter] Then ;Obb das Wort in liste synr ist
;~ MsgBox(0,"","asd")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color5) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
;~ MsgBox(0,"","fertig")
$merker = 1
ExitLoop
else;wenn das wort nicht drinnen ist, wird wieder zurück geschrieben
if $merker == 0 then
;~ MsgBox(0,"","neu")
_GUICtrlRichEdit_SetSel($hRichEdit, $iCpStart, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, 0x000000) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
_GUICtrlRichEdit_SetSel($hRichEdit, $letztes+1, $letztes+1) ;text markieren
EndIf
endif
;~ MsgBox(0,"","nochmal")
next
$merker = 0 ;zurücksetzten bevor es erneut durch geht
;===================================================================================
Else ; = error meldung wenn etwas markiert
MsgBox(16,"not","kot")
endif
Else ;wenn das Fenster nicht im Vordergrund ist
HotKeySet(" ")
Send("{SPACE}")
HotKeySet(" ","space")
EndIf
EndFunc
Func dataopen()
[/autoit] [autoit][/autoit] [autoit];==========Daten rein laden
_GUICtrlRichEdit_SetText($hRichEdit,$inhalt)
_GUICtrlRichEdit_SetSel($hRichEdit, 0,-1) ;text markieren
_GUICtrlRichEdit_SetFont($hRichEdit, 15, "CALIBRI")
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
;==========Daten rein laden
$zeichenzahl = StringLen($inhalt)
;~ MsgBox(0,"",$zeichenzahl)
for $zahler = 0 to $zeichenzahl
[/autoit] [autoit][/autoit] [autoit]_GUICtrlRichEdit_SetSel($hRichEdit, $zahler,$zahler) ;text anfang setzten
$zeichen = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $zahler,$zahler+1)
ConsoleWrite($zeichen)
space()
Next
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit]Noch eine getrennte Frage für sich. Kann ich die Textfarbe ändern, ohne den Text markieren zu müssen ?
[autoit]_GUICtrlRichEdit_SetSel($hRichEdit, $erstes, $letztes) ;text markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, $color1) ;die Farbe verändern
Danke für die schnelle Antwort!
Nun kann ich das Script ausführen ![]()
Aber wenn ich autoit eingebe, bekomme ich keinen highlight ![]()
Bei mir ist die ganze Schrift schwarz.
Tim
Danke für eure Antwort ! Wird Zeit das ich mir die aktuelle besorgen ![]()
So, noch eine Sache, dann müsste es laufen.
ERROR: RichBox_WndProc() called by a previous line with 0 arg(s). Min = 4. First previous line calling this Func is 9
Tim
Danke, habe ich gemacht. Es gibt noch Syntaxfehler in Zeile 30 und 47. Was meinst du in Zeile 47 mit[0] ?
Danke für eure Antworten. Ich habe scheinbar keine WinAPIConstants.au3
Könnte die jemand uploaden ? Google spukt mir nichts aus ![]()
Tim
Ich bin noch dabei einen eigenen Editor mit Syntaxhighlightung zu schreiben, und würde die Funktion zur Überprüfung ob ein Wort nun gehighlightet wird nach der Eingabe ausführen.
zurzeit habe ich nur die Leertaste. Aber das ist nicht ganz perfekt so, weil es möglich ist die Syntax ohne Leerzeichen zu schreiben.
Tim
Hallo,
ich würde gerne eine Funktion aufrufen, wenn irgendeine Taste der Tastatur gedrückt wird.
Diese Taste möchte ich der Funktion noch mit übergeben.
Es spielt keine Frage ob es klein oder groß geschrieben ist.
Nun könnte ich zich Hotkeys setzten oder _IsPressed abfragen aufbauen.
Gibt es eine elegantere Lösung ?
So stelle ich mir das vor:
while 1
;hier die unbekannte funktion
wend
func aufruf($key)
...
endfunc
Grüße Tim
Danke euch beiden !
Mittlerweile habe ich eine gute Lösung gefunden. Ich poste hier noch den fertigen Code, sobald das Projekt fertig ist. Jetzt gibt es ertmal noch eine andere Frage ![]()
Grüße
Hey, das ist ja super. Habe mich eben ein wenig damit befasst.
Das Problem das ich habe, das die meisten Funktionen auf Markierungen reagieren. Gibt es die Möglichkeit, die Markierungen zu umgehen ?
Ich habe hier einmal ein Code Beispiel geschrieben, dass mir das Wort 'test' blau einfärben soll.
Würde mich freuen wenn ihr mir einen Tipp geben könntet:
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hGui = GUICreate("HL", 700, 500, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "", 10, 10, 680, 400, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
GUISetState()
While True
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
Exit
EndSelect
[/autoit][autoit][/autoit][autoit]$suchwort = "test"
$inhalt = _GUICtrlRichEdit_GetText($hRichEdit) ;Inhalt auslesen
$position = StringInStr($inhalt,$suchwort) ;das Suchwort suchen
;~ MsgBox(0,"",$position)
if $position > 0 then ;wenn ein Suchwort gefunden ist
_GUICtrlRichEdit_SetSel($hRichEdit, $position-1, StringLen($suchwort)+$position-1) ;das Wort markieren
_GUICtrlRichEdit_SetCharColor($hRichEdit, 0xFF0000) ;die Farbe verändern
_GUICtrlRichEdit_Deselect($hRichEdit) ; die Markierung aufheben
EndIf
WEnd
[/autoit]Hallo Ihr Lieben,
ich würde gerne ein kleines Script schreiben, in dem ein Inputfeld vorhanden ist, welches vorher definierte Wörter farblich hervorhebt.
Soweit ich weis gibt es aber keine Möglichkeit einzelne Wörter zu formatieren sondern nur der gesamte Text, wie mit z.B. Guictrlfont...
Wie kann ich mein Vorhaben umsetzten ? GDI ?
Danke für Ideen ![]()
Tim
Hallo Ihr Lieben,
ich würde gerne aus einem Spiel das aktuelle Leben auslesen. Es handelt sich um "Creativerse". Es gibt eine rote Lebensanzeige, allerdings würde ich viel lieber direkt auf die Werte zugreifen.
Nein, ich will da nichts beschreiben oder pfuschen, ich will meine Tastatur aufrüsten, und dieser die Fähigkeit geben zu vibrieren wenn ich im Spiel Schaden nehme.
Hardwaremäßig ist das kein Problem für mich, nur müsste ich irgendwie an die Lebensdaten kommen.
Das spiel basiert auf Visual C++ und Microsoft Net Framework 4.5. Kann man damit schon etwas anfangen ?
Vielen Dank für kreative Antworten!
Grüße Tim
Leider sind die Links down. Gibt es die Bücher noch ?
Grüße
Vielen Dank. Schade das man es über diesen "Umweg" machen muss.
Einen Schönen Abend !
Grüße Tim