Moin AutoIT'ler,
ich versuche momentan ein Tool für unsere Mitarbeiter zu entwickeln, was einen Quelltext ausliest und dort bestimmte Begriffe austauscht und in einem neuen Fenster als Zieltext ausgibt.
Momentan ist es so, das ich nach jedem StringReplace die Box mit GUICtrlRead wieder neu auslese, wieder den weiteren Begriff suche und wieder ersetze. Bei z.B. 30 Begriffen die gesucht und evtl ersetzt werden müssen wären das mit meiner "Noob"-Variante ja unmengen an Code.
Dass muss doch auch besser gehen.
Ich poste hier mal das testskript:
Spoiler anzeigen
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=
#AutoIt3Wrapper_Outfile=
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#Include <GuiEdit.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <ComboConstants.au3>
;#########################################
Global $version = "1.00"
;#########################################
$WinTitle = " Test" & $version & " © me"
$GUI = GUICreate($WinTitle, 500, 230)
GUICtrlCreateGroup("INPUT: ", 12, 0, 475, 192)
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
$combo_anrede = GUICtrlCreateCombo("Anrede auswählen:", 20, 15, 177, -1, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1,"Sehr geehrter Herr |Sehr geehrte Frau |Sehr geehrte Damen und Herren", "")
$input_anrede = GUICtrlCreateInput("", 200, 15, 100, 20)
GUICtrlSetState($input_anrede,$GUI_HIDE)
$input = GUICtrlCreateEdit ("", 20, 50, 457, 120, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
$button_input = GUICtrlCreateButton("Los Pikachu!!!", 120, 200, 90, 17)
$GUI_OUTPUT = GUICreate("AUSGABE", 500, 230)
GUICtrlCreateGroup("OUTPUT: ", 12, 0, 475, 192)
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
$output = GUICtrlCreateEdit ("", 20, 15, 457, 170, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
$button_output = GUICtrlCreateButton("OK", 120, 200, 90, 17)
$signature = "[Agent_Name]" & @CRLF & "Customer Technology Service" & @CRLF & "Test Europe, Middle East, Indian Subcontinent & Africa "
GUISetState(@SW_SHOW, $GUI)
While 1 * Sleep(50)
$read_anrede = GUICtrlRead($combo_anrede)
If $read_anrede = "Sehr geehrter Herr " Then
GUICtrlSetState($input_anrede,$GUI_SHOW)
ElseIf $read_anrede = "Sehr geehrte Frau " Then
GUICtrlSetState($input_anrede,$GUI_SHOW)
Else
GUICtrlSetState($input_anrede,$GUI_HIDE)
EndIf
$msg = GUIGetMsg(1)
Switch $msg[1]
Case $GUI
Switch $msg[0]
Case $button_input
; hier wird der Input ausgelesen
$read_anrede = GUICtrlRead($combo_anrede)
$read_input_anrede = GUICtrlRead($input_anrede)
$read_input = GUICtrlRead($input)
If $read_anrede = "Sehr geehrter Herr " OR $read_anrede = "Sehr geehrte Frau " Then
If $read_input_anrede = "" Then
MsgBox(0,"ALERT","Kein Ansprechpartner ausgewählt!")
Else
GUISetState(@SW_SHOW, $GUI_OUTPUT)
GUISetState(@SW_HIDE, $GUI)
GUICtrlSetData($output, $read_anrede & $read_input_anrede & "," & @CRLF & @CRLF & $read_input & @CRLF & @CRLF & $signature)
$read_input1 = GUICtrlRead($input)
$replace1 = StringReplace ($read_input1, "IP", "International Priority", 0, 1)
GUICtrlSetData($output, $read_anrede & $read_input_anrede & "," & @CRLF & @CRLF & $replace1 & @CRLF & @CRLF & $signature)
$read_input2 = GUICtrlRead($output)
$replace2 = StringReplace ($read_input2, "IE", "International Economy", 0, 1)
GUICtrlSetData($output, $replace2)
$read_input3 = GUICtrlRead($output)
$replace3 = StringReplace ($read_input3, "IEF", "International Economy Freight", 0, 1)
GUICtrlSetData($output, $replace3)
$read_input4 = GUICtrlRead($output)
$replace4 = StringReplace ($read_input4, "IPF", "International Priority Freight", 0, 1)
GUICtrlSetData($output, $replace4)
EndIf
ElseIf $read_anrede = "Sehr geehrte Damen und Herren" Then
GUICtrlSetData($input_anrede, "")
GUISetState(@SW_SHOW, $GUI_OUTPUT)
GUISetState(@SW_HIDE, $GUI)
$read_input1 = GUICtrlRead($input)
$replace1 = StringReplace ($read_input1, "IP", "International Priority", 0, 1)
GUICtrlSetData($output, $read_anrede & "," & @CRLF & @CRLF & $replace1 & @CRLF & @CRLF & $signature)
$read_input2 = GUICtrlRead($output)
$replace2 = StringReplace ($read_input2, "IE", "International Economy", 0, 1)
GUICtrlSetData($output, $replace2)
$read_input3 = GUICtrlRead($output)
$replace3 = StringReplace ($read_input3, "IEF", "International Economy Freight", 0, 1)
GUICtrlSetData($output, $replace3)
$read_input4 = GUICtrlRead($output)
$replace4 = StringReplace ($read_input4, "IPF", "International Priority Freight", 0, 1)
GUICtrlSetData($output, $replace4)
ElseIf $read_anrede = "Anrede auswählen:" Then
MsgBox(0,"ALERT","Keine Anrede ausgewählt!")
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Case $GUI_OUTPUT
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $GUI)
GUISetState(@SW_HIDE, $GUI_OUTPUT)
Case $button_output
GUISetState(@SW_SHOW, $GUI)
GUISetState(@SW_HIDE, $GUI_OUTPUT)
EndSwitch
EndSwitch
WEnd
Alles anzeigen
Im Text sollen also Begriff wie IP, IE, IPF, IEF und so weiter und so fort, gesucht und ersetzt werden. Also die Abkürzungen zum Beispiel sollen die vollständigen Wörter ausgeben. Bisher sieht man ja, dass ich jedesmal nach einem Replace die Box neu auslesen lasse...
Das muss doch auch anders gehen...?
LG
Mirko