1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. mirko2002

Beiträge von mirko2002

  • StringRegExp richtig verwenden

    • mirko2002
    • 13. April 2016 um 12:40

    Hallo Community,

    ich scheiter mal wieder an einer wahrscheinlich sehr simplen Sache.

    In der Zwischenablage habe ich einen String der wie folgt aussieht:

    Code
    Account no.: 123456789
    Company: Test GmbH
    Your Name: Herr Test
    Address: Teststrasse 1
    City: Testort
    Postal code: 12345
    Telephone: 0123456789
    E-Mail Address: bla@test.de
    Country: DE


    Ich möchte nun, dass er Strings wie "Account no." sucht und mir den Wert dahinter ausgibt. Also ich brauche sozusagen die Daten hinter dem Doppelpunkt.

    Folgenden Code habe ich bereits:


    AutoIt
    ConsoleWrite("Ausgabe 1: " & @CRLF)
    	ConsoleWrite($Zwischenablage_MediaTrix& @CRLF)
    	$dataArray = StringRegExp($Zwischenablage_MediaTrix, "(?m)^(.+?)\h*:\h*(.*?)\h*$", 4)
    
    
    	Local $dic_Variables = ObjCreate("Scripting.Dictionary")
    	For $Match In $dataArray
    		$dic_Variables($Match[1]) = $Match[2]
    	Next
    
    
    	ConsoleWrite("Ausgabe 2: " & @CRLF)
    	ConsoleWrite($Match[1]& " " & $Match[2] & @CRLF & @CRLF)
    Alles anzeigen


    In der Console haut er mir die komplette Zwischenablage rein (Ausgabe 1)... wie es oben bereits steht, so stehts auch in der Zwischenablage.

    Die Ausgabe 2 gibt mir dann nur noch "Country DE" aus - also sozusagen den letzten "Match" den er gefunden hat.

    Wie bekomme ich eine genaue Auflistung aller Matches und das ich dann nach bestimmten Dingen (wie Company oder so) gezielt suchen kann? Ich muss letzendlich nämlich die gesuchte Werte in Variablen speichern und dies gelint mir nicht :(

    LG
    Mirko

  • Telnet-Status abrufen

    • mirko2002
    • 24. März 2016 um 10:19

    Ei Karamba... alles klar somit kann ich alles zum laufen bekommen :)

    Danke für die Denkanstösse - Skript läuft wie es soll

  • Telnet-Status abrufen

    • mirko2002
    • 24. März 2016 um 01:00

    Damit kann ich aber nur IP Adressen ansprechen. Ich muss stattdessen aber eine URL erreichen (gateway.fedex.com).

    Oder geht das damit auch? Laut Hilfe sieht's aber nicht danach aus.

    Lg

  • Telnet-Status abrufen

    • mirko2002
    • 23. März 2016 um 13:51

    Hallo zusammen,

    ich bastel derzeit ein Tool für meine Arbeit, wo ich den Status eines bestimmten Gateways prüfen kann.

    Dieser Gateway muss zwingend über Port 443 erreichbar sein, demnach macht ein anpingen keinen Sinn, zumal der Gateway im Stealth-Modus läuft und eh über Ping keine Antwort zurückkommt.

    Also ist für uns die Lösung momentan das ganze über Telnet zu prüfen. Mache ich das ganze manuell über das CMD Fenster sehe ich, dass ich über Telnet verbunden wurde. Den gleichen Befehl kann ich natürlich auch über AutoIT senden, jedoch wie kann ich in der GUI anzeigen lassen, dass die Verbindung auch wirklich steht und er nicht ein "unable to connect to host" kommt?

    Momentan sende ich ja bereits über einen Button den Telnet-Befehl... es öffnet sich auch das Telnet/CMD Fenster, aber erstens will ich, dass später der Anwender das CMD Fenster gar nicht mehr sieht und zweitens wie kann ich eine Abfrage stellen, dass die Telnetverbindung auch erfolgreich war?

    Hier mal das Skript - der dort enthaltene Gateway ist auch genau der um den es geht:

    Spoiler anzeigen
    AutoIt
    #include <guiconstants.au3>
    #include <AutoItConstants.au3>
    
    
    $PortScanner = GUICreate("Port Scanner", 400, 270)
    GUICtrlCreateGroup("Port Scan", 5, 5, 385, 160)
    $IPLabel = GUICtrlCreateLabel("IP:", 20, 17)
    $PortIPAddress = GUICtrlCreateInput("127.0.0.1", 20, 33, 125)
    GUICtrlCreateLabel("Start Port", 28, 55)
    $PortStartNumber = GUICtrlCreateInput("8080", 20, 68, 60)
    GUICtrlCreateLabel("End Port", 93, 55)
    $PortEndNumber = GUICtrlCreateInput("8085", 85, 68, 60)
    $StartScanRange = GUICtrlCreateButton("Range Scan", 20, 91, 125)
    GUICtrlSetFont($StartScanRange,13)
    GUICtrlCreateLabel("Single Port Scan", 20, 120)
    $SinglePort = GUICtrlCreateInput("443", 20, 135, 60)
    $StartScanSingle = GUICtrlCreateButton("Scan", 90, 133, 50)
    GUICtrlSetFont($StartScanSingle,13)
    $OnPort = GUICtrlCreateLabel("Scanne Port:", 160, 145, 300, 15)
    GUICtrlCreateGroup("Offene Ports", 160, 17,105, 125)
    $OpenPortList=GUICtrlCreateList("", 168, 30, 90, 109)
    GUICtrlSetBkColor( -1, 0x00FF00)
    GUICtrlCreateGroup ("",-99,-99,1,1)
    GUICtrlCreateGroup("Geschlossene Ports", 270, 17,105, 125)
    $ClosedPortList=GUICtrlCreateList("", 278, 30, 90, 109)
    GUICtrlSetBkColor( -1, 0xFF0000)
    GUICtrlCreateGroup ("",-99,-99,1,1)
    
    
    GUICtrlCreateGroup("Gateway Scan", 5, 175, 385, 85)
    $GatewayLabel = GUICtrlCreateLabel("Adresse:", 20, 190, 50, 13)
    $GatewayInput = GUICtrlCreateInput("gateway.fedex.com", 20, 206, 125, 20)
    $GatewayPortLabel = GUICtrlCreateLabel("Port:", 168, 190, 50, 13)
    $GatewayPortInput = GUICtrlCreateInput("443", 168, 206, 125, 20)
    $StartScanGateway = GUICtrlCreateButton("Scan", 20, 230, 125)
    GUICtrlSetFont($StartScanGateway,13)
    
    
    GUISetState(@SW_SHOW)
    
    
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_ClOSE
                ExitLoop
            Case $msg = $StartScanRange
                _StartScanRange()
            Case $msg = $StartScanSingle
                _StartScanSingle()
    		Case $msg = $StartScanGateway
    			_StartScanGateway()
        EndSelect
    WEnd
    
    
    Func _StartScanGateway()
    $Gateway=GUICtrlRead($GatewayInput)
    $GatewayPort=GUICtrlRead($GatewayPortInput)
    ;~ Run("telnet gateway.fedex.com 443", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    Run("telnet " & $Gateway & " " & $GatewayPort, @SystemDir, $STDIN_CHILD + $STDOUT_CHILD)
    If @error Then
    	MsgBox(16, "Attention!", "No TELNET connection!" & @CRLF & "Please be sure that your computer is well configured" & @CRLF & " and your connection is running!", 20)
    EndIf
    EndFunc
    
    
    Func _StartScanSingle()
    $PortIP=GUICtrlRead($PortIPAddress)
    $SinglePortRead=guictrlread($SinglePort)
    TCPStartup()
    $socket = TCPConnect($PortIP,$SinglePortRead)
    ControlSetText("", "", $OnPort, "Scanne Port: " & $SinglePortRead & "")
    If $socket = -1 Then
    	GUICtrlSetData($ClosedPortList, $SinglePortRead)
    	$SinglePortRead = $SinglePortRead + 1
    ElseIf $socket = 1 Then
    	$SinglePortRead = $SinglePortRead + 1
    ElseIf $socket = 2 Then
    	$SinglePortRead = $SinglePortRead + 1
    Else
    	GUICtrlSetData($OpenPortList,$SinglePortRead)
    	$SinglePortRead = $SinglePortRead + 1
    EndIf
    TCPShutdown()
    ControlSetText("", "", $OnPort, "Scanne Port: " & $SinglePortRead-1 & " - Portsuche abgeschlossen")
    EndFunc
    
    
    Func _StartScanRange()
    $PortIP=GUICtrlRead($PortIPAddress)
    $PortEndNumberB=guictrlread($PortEndNumber)
    $PortStartNumberB=guictrlread($PortStartNumber)
    TCPStartup()
    $timerstart = TimerInit()
    For $LetsGo = $PortStartNumberB To $PortEndNumberB
    	$socket = TCPConnect($PortIP,$PortStartNumberB)
    	ControlSetText("", "", $OnPort, "Scanne Port: " & $PortStartNumberB & "")
        If $socket = -1 Then
    ;~         ConsoleWrite($PortStartNumberB & " - Unable to connect." & @CRLF)
    		GUICtrlSetData($ClosedPortList, $PortStartNumberB)
    		$PortStartNumberB = $PortStartNumberB + 1
        ElseIf $socket = 1 Then
    ;~         ConsoleWrite($PortStartNumberB & " - Wrong Address" & @CRLF)
    		$PortStartNumberB = $PortStartNumberB + 1
            ExitLoop
        ElseIf $socket = 2 Then
    ;~         ConsoleWrite($PortStartNumberB & " - Wrong Port" & @CRLF)
    		$PortStartNumberB = $PortStartNumberB + 1
        Else
    ;~         ConsoleWrite($PortStartNumberB & " - Success!" & @CRLF)
    		GUICtrlSetData($OpenPortList,$PortStartNumberB)
    		$PortStartNumberB = $PortStartNumberB + 1
        EndIf
    Next
    TCPShutdown()
    ControlSetText("", "", $OnPort, "Scanne Port: " & $PortStartNumberB-1 & " - Portsuche abgeschlossen")
    $timerend = TimerDiff($timerstart)
    TrayTip("Port Scanner", "Done Process took " & Round($timerend,-1)/1000 & " seconds", 7, 1)
    EndFunc
    Alles anzeigen

    Habt ihr ne Idee wie ich das realisieren kann? Mometan öffnet sich halt einfach nur das CMD Fenster und ist leer (ein Zeichen dafür, dass ich mit dem Gateway connected bin). Aber wie kann ich das jetzt "auslesen"? Ich will mit dem Tool nur testen ob der Gateway überhaupt erreichbar ist - keine weitere Kommunikation soll damit stattfinden...

  • Code optimieren

    • mirko2002
    • 10. September 2015 um 08:17

    Na die Unterhaltung wird ja interessant hier :)

    Also der Text kommt aus einem Edit-Feld meiner GUI. Aus einem unserer Programme wird dort halt ein sehr langer Text reinkopiert (also ins Editfeld) was anschliessend komplett umgewandelt wird und später durch eine Textvorlage eingefügt. In der Textdatei werden die Schlüsselwörter so angegeben: Hier kommt der %Beispielwert% rein.
    Also so gesehen arbeite ich mit 2 Strings. Eines was aus dem Editfeld eingelesen wird und eins, was in der Textdatei steht. Aus diesen beiden Strings wird im Endeffekt ein dritter generiert, der uns dann als Emailvorlage dient. Ich hoffe das klingt jetzt nicht alles zu wirr ohne das man den kompletten quellcode sieht.

    Ich kan Andys Gedankengänge schon nachvollziehen, jedoch muss tatsächlich an den zu suchenden Wörtern nichts geändert werden oder hinzugefügt werden, denn das wird nie passieren. Der Code, der aus unserem Arbeitsprogramm generiert wird, ist immer derselbe. Da wird nicht in nem halben Jahr ein neuer String hinzukommen oder sich ändern - er ist halt immer gleich. Daher finde ich es nicht schlimm, wenn das hardcoded im Quelltext ist, anstatt "dynamisch" in einer externen csv-Datei.

  • Code optimieren

    • mirko2002
    • 9. September 2015 um 14:54

    Hey danke an beide für die anschaulichen Beispiele :)

    Wobei mir (von meinem eigenes Verständnis her) die zweite Methode (die von Bioshade) besser gefäält. Den Code kann ich besser lesen. Code, den ich besser lesen kann, kann ich auch besser verstehen bzw mit arbeiten :)

    Auch wenn bei beiden dasselbe passiert :)

    Danke - damit kann ich etwas anfangen und mein Skript erheblich verkürzen. 500 Zeilen und die Hälfte (übertrieben) davon solche einzelnen Abfragen blähen den Code einfach unendlich auf...

  • Code optimieren

    • mirko2002
    • 9. September 2015 um 14:20

    Hm die StringReplacer sind ja alle komplett unterschiedlich... ohne wirkliches Muster...

    Hier mal ein grösserer Ausschnitt:


    AutoIt
    $sOutput1 = StringReplace($sOutput, "INTERNATIONAL_ECONOMY(4)", "International Economy", 0, 1)
    		$sOutput2 = StringReplace($sOutput1, "INTERNATIONAL_PRIORITY(1)", "International Priority", 0, 1)
    		$sOutput3 = StringReplace($sOutput2, "INTERNATIONAL_PRIORITY_FIRST(6)", "International Priority First", 0, 1)
    		$sOutput4 = StringReplace($sOutput3, "EUROPE_FIRST_INTERNATIONAL_PRIORITY(null)", "International Europe First", 0, 1)
    		$sOutput5 = StringReplace($sOutput4, "PRIORITY_OVERNIGHT(1)", "Priority Overnight", 0, 1)
    		$sOutput6 = StringReplace($sOutput5, "INTERNATIONAL_PRIORITY_DISTRIBUTION(null)", "International Priority Distribution", 0, 1)
    
    
    		$sOutput7 = StringReplace($sOutput6, "MON ", " ", 0, 1)
    		$sOutput8 = StringReplace($sOutput7, "TUE ", " ", 0, 1)
    		$sOutput9 = StringReplace($sOutput8, "WED ", " ", 0, 1)
    		$sOutput10 = StringReplace($sOutput9, "THU ", " ", 0, 1)
    		$sOutput11 = StringReplace($sOutput10, "FRI ", " ", 0, 1)
    Alles anzeigen

    Hab mir For-Schleifen noch nie gearbeitet. Könntest Du mir evtl ein Beispiel anhand von 2 Variablen kurz zeigen? Wenn ich es sehe verstehe ich in der Regel den Sinn des Codes und kann ihn mir entsprechend anpassen...

  • Code optimieren

    • mirko2002
    • 9. September 2015 um 13:58

    Hiho Gemeine,

    ich hab im moment eine Denkblockade. Könnt ihr mir helfen meinen Code zu verkürzen, damit ich nicht 5000 Variablen erstellen muss mit jeder neuen Abfrage?

    Als Beispiel: Ich les einen String in eine Variable und dieser String wird anschliessend über zig tasusend Dinge überprüft und ggf auch Dinge ersetzt.

    AutoIt
    $sOutput7 = StringReplace($sOutput6, "MON ", " ", 0, 1)
    		$sOutput8 = StringReplace($sOutput7, "TUE ", " ", 0, 1)
    		$sOutput9 = StringReplace($sOutput8, "WED ", " ", 0, 1)
    		$sOutput10 = StringReplace($sOutput9, "THU ", " ", 0, 1)
    		$sOutput11 = StringReplace($sOutput10, "FRI ", " ", 0, 1)

    Das Snipped dient nur als Beispiel - solche Stellen ziehen sich allerdings recht oft durch mein Skript und ich hab momentan einfach kein Plan, wie ich das kurz und übersichtlich und vor allem mit weniger Variablen lösen kann.

    Mein String wird so oft bearbeitet das ich am Ende da sicher 30 Variablen, oder mehr habe.

    Jemand Vorschläge?

    LG
    Mirko

  • Excel in Array lesen und bestimmte Werte finden

    • mirko2002
    • 7. September 2015 um 14:39

    Eieiei.... danke für den Denkanstoss... genau damit klappts natürlich :)

    _ArraySearch sei dank - das hatte ich vorher nicht gefunden...

    Wen es interessiert hier noch das Lösungsskript:

    AutoIt
    $oExcel = _Excel_Open(False,False,True,True,True)  ;// Excel invisible, read-only
    If @error Then Exit MsgBox(16, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    $sFilePath1 = "M:\SV\BDG\Zip-Finder\2015 Mini Zip Finder DE.xlsx" ; Diese Datei sollte bereits existieren
    $oExcel = _Excel_BookOpen($oExcel,$sFilePath1,True)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example 1", "Error opening '" & $sFilePath1 & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $aResult = _Excel_RangeRead($oExcel, Default, $oExcel.ActiveSheet.Usedrange.Columns("A:F"), 1)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 3", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _ArrayDisplay($aResult, "Excel UDF: _Excel_RangeRead Example 3 - Formulas in column A - F")
    $test = _ArraySearch($aResult,"12345", 0, 0, 0, 1, 1, 0)
    ConsoleWrite("Postleitzahl gefunden in Zeile: " & $test & @CRLF)
    $name = $aResult[$test][3]
    $phonenumber_ae = $aResult[$test][5]
    ConsoleWrite("Name: " & $name & @CRLF & "Telefon#: " & $phonenumber_ae & @CRLF)
    _Excel_BookClose($oExcel) ; Zum Abschluss verlassen wir das Programm
    _Excel_Close($oExcel)
    Alles anzeigen

    Danke BugFix ;)

  • Excel in Array lesen und bestimmte Werte finden

    • mirko2002
    • 7. September 2015 um 12:33

    Hallo zusammen,

    ich stecke (wie so oft in letzter Zeit bei AutoIT) in einer Sackgasse.

    Ich möchte, dass mein Tool eine Exceldatei ausliest und anschliessend dort einen Wert, der vorher in einer Variable deklariert ist sucht und die Spalten dahinter ausgibt. Ich erkläre es anhand eines Beispiels.

    In der Excel-Datei stehen Postleitzahlen in einer Spalte, in einer weiteren der zuständige Mitarbeiter für dieses Gebiet und in noch einer weiteren kommt die Telefonnummer des Mitarbeiters.

    Anhand des folgenden Code-Schnipsels kann er mir wenigstens schonmal die Excel auslesen und in ein Array packen:


    AutoIt
    $oExcel = _Excel_Open(False,False,True,True,True)  ;// Excel invisible, read-only
    If @error Then Exit MsgBox(16, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    $sFilePath1 = "M:\SV\BDG\Zip-Finder\2015 Mini Zip Finder DE.xlsx" ; Diese Datei sollte bereits existieren
    $oExcel = _Excel_BookOpen($oExcel,$sFilePath1,True)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example 1", "Error opening '" & $sFilePath1 & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $aResult = _Excel_RangeRead($oExcel, Default, $oExcel.ActiveSheet.Usedrange.Columns("A:F"), 1)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 3", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _ArrayDisplay($aResult, "Excel UDF: _Excel_RangeRead Example 3 - Formulas in column A - F")
    _Excel_BookClose($oExcel) ; Zum Abschluss verlassen wir das Programm
    _Excel_Close($oExcel)

    In Zeile 6 kann man sehen, dass der Spalte A-F ausliest. Wobei ich jedoch nur Spalte A, D und F benötige. Hab es allerdings nicht anders hinbekommen, dass er mir nur die 3 gewünschten Spalten ausliest.

    In Spalte A stehen alle Postleitzahlen, in Spalte D die Namen und in Spalte F die Telefonnummern. Ziel ist, dass er mir eine vorher per Variable vorgegebene Postleitzahl aus der Exceldatei ausliest und mir einfach nur ausgibt, wer der Mitarbeiter dort ist, mit dessen Telefonnummer. Hier im Anhang habe ich als Bild hochgeladen, wie der Array aussieht, den er mir wieder gibt.

    Kann mir da jemand weiterhelfen ?(


    LG
    Mirko

    Dateien

    excel.png 97,66 kB – 0 Downloads
  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • mirko2002
    • 4. September 2015 um 15:26

    Hallo Oskar,

    danke für den Denkanstoss! :)

    Kann Dein Skript leider nicht testen, da bei mir _GUICtrlEdit_SetCueBanner nicht existiert? Ich habe zwar eine _GUICtrlEdit_Set-Befehle zur Verfügung, aber dieser ist nicht dabei?

    //Edit: testen kann ich es halt ohne den CueBanner Befehl... sieht schick aus :) gefällt mir sogar glatt besser als die blöden Msg-Boxen... :)

  • Excel Funktions Referenz

    • mirko2002
    • 4. September 2015 um 14:10

    Ja wär eine Möglichkeit, aber warum enthält die deutsche Referenz Befehle die gar nicht mehr existieren? Die komplette deutsche Excel Referenz ist nicht mehr aktuell...

    Kein Befehl davon funktioniert mehr :(

  • Excel Funktions Referenz

    • mirko2002
    • 4. September 2015 um 12:44

    Hallo zusammen,

    ich bin etwas irritiert was die Excel.au3 in AutoIT betrifft.

    Die autoit.de Referenz verweist anscheinend auf alte Excel-Befehle (Beispiel _Excel_BookOpen vs _ExcelBookOpen).

    Meine Excel.au3 hat bereits die neuen Befehle (_Excel_BookOpen) allerdings zeigt die autoit.de Referenz noch die alten Befehle (_ExcelBookOpen). Leider sind auch die Threads die ich hier finde auf die alten Befehle... gibts keine deutsche Referenz für die aktuellen Befehle oder bin ich einfach nur blind und seh's nicht?

    LG
    Mirko

  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • mirko2002
    • 4. September 2015 um 12:18

    Korrekt...

    ich hatte hier auch schon Threads zu gefunden wo Labels rot umrandet wurden. Ich kann sie aber ums verrecken nicht mehr finden. Das war nämlich auch meine erste Idee das so zu machen. Als ich es nicht mehr fand dachte ich an oben genannten Befehl :)

  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • mirko2002
    • 4. September 2015 um 11:17

    Ach na das ist ja doof. Der Style soll so bestehen bleiben, weil es die Art DropDown Menü ist die ich benötige.

    Das heisst ich kann es also vergessen, dass ganze Control zu färben? :(

  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • mirko2002
    • 4. September 2015 um 10:36

    So soll es sein :)

    Snip:

    AutoIt
    $WinTitle = " BDG Mail " & $version
    $GUI = GUICreate($WinTitle, 500, 230)
    GUISetBkColor(0xdfddff)
    
    
    GUICtrlCreateGroup("", 12, 0, 475, 192)
    GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
    
    
    $combo_anrede = GUICtrlCreateCombo("Anrede auswählen:", 20, 15, 115, -1, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "Sehr geehrter Herr |Sehr geehrte Frau ", "")
    $input_anrede = GUICtrlCreateInput("", 140, 15, 100, 21)
    GUICtrlSetState($input_anrede, $GUI_HIDE)
    $input_phone = GUICtrlCreateInput("Telefonnummer", 250, 15, 105, 21)
    $combo_customer_type = GUICtrlCreateCombo("Kundentyp:", 362, 15, 115, -1, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "Private |Business", "")
    $input = GUICtrlCreateEdit("", 20, 50, 457, 120, BitOR($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    $button_input = GUICtrlCreateButton("Mediatrix Mail erstellen", 190, 200, 120, 19)
    
    
    GUISetState(@SW_SHOW, $GUI)
    
    
    While 1
    
    
    	$read_anrede = GUICtrlRead($combo_anrede)
    	If $read_anrede = "Sehr geehrter Herr " Then
    		GUICtrlSetState($input_anrede, $GUI_SHOW)
    		Sleep(50)
    	ElseIf $read_anrede = "Sehr geehrte Frau " Then
    		GUICtrlSetState($input_anrede, $GUI_SHOW)
    		Sleep(50)
    	Else
    		GUICtrlSetState($input_anrede, $GUI_HIDE)
    	EndIf
    
    
    	$msg = GUIGetMsg(1)
    		Switch $msg[0]
    			Case $GUI_EVENT_PRIMARYDOWN
    				If $phone = 0 Then
    					$cInfo = GUIGetCursorInfo()
    					If IsArray($cInfo) Then
    						If $cInfo[4] = $input_phone Then
    							GUICtrlSetData($input_phone, "")
    							$phone = 1
    						EndIf
    					EndIf
    				EndIf
    			Case $button_input
    				; hier wird der Input ausgelesen
    				$read_anrede = GUICtrlRead($combo_anrede)
    				$read_customer_type = GUICtrlRead($combo_customer_type)
    				$read_input_anrede = GUICtrlRead($input_anrede)
    				$read_input_phone = GUICtrlRead($input_phone)
    				If $read_anrede = "Sehr geehrter Herr " Or $read_anrede = "Sehr geehrte Frau " Then
    					If $read_input_anrede = "" Then
    						MsgBox(48, "Hier lief etwas schief...", "Kein Ansprechpartner ausgewählt!")
    						_WriteLog("Kein Ansprechpartner ausgewählt. Zeile: " & @ScriptLineNumber)
    					Else
    						If $read_input_phone = "" Or $read_input_phone = " " Or $read_input_phone = "Telefonnummer" Then
    							MsgBox(48, "Hier lief etwas schief...", "Keine Telefonnummer eingetragen!")
    							_WriteLog("Keine Telefonnummer eingetragen. Zeile: " & @ScriptLineNumber)
    						Else
    							If $read_customer_type = "Kundentyp:" Then
    								MsgBox(48, "Hier lief etwas schief...", "Keinen Kundentyp ausgewählt!")
    								_WriteLog("Kein Kundentyp ausgewählt. Zeile: " & @ScriptLineNumber)
    							Else
    								; rufe die _replace() Funktion auf
    								_replace()
    							EndIf
    						EndIf
    					EndIf
    				Else
    					GUICtrlSetBkColor($combo_anrede, 0x0000FF)
    					MsgBox(48, "Hier lief etwas schief...", "Keine Anrede ausgewählt!")
    					_WriteLog("Keine Anrede ausgewählt. Zeile: " & @ScriptLineNumber)
    				EndIf
    			Case $GUI_EVENT_CLOSE
    				Exit
    		EndSwitch
    WEnd
    Alles anzeigen

    Egal ob ich das SetBKColor direkt schon ganz oben unter dem Control haue oder erst unten in die Whileschleife beim Fehelr - er machts einfach nicht...

  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • mirko2002
    • 4. September 2015 um 09:22

    Guten Morgen alle zusammen,

    ich habe derzeit das Problem, dass GUICtrlSetBkColor auf ein Combo nicht reagiert.

    Der Befehl schaut ganz simpel so aus:

    GUICtrlSetBkColor($combo_anrede, 0x0000FF)

    Letzendlich prüft mein Tool, ob bei klick auf ein Button, im Combofeld etwas ausgewählt wurde. Wenn nicht, soll der User einen Fehler erhalten - momentan durch eine MessageBox gelöst. Ich will davon aber wegkommen und wollte lieber das Control rot einfärben lassen.

    Laut AutoIT Funktionsreferenz färbt GUICtrlSetBkColor auch Combo Controls ein - leider macht er das bei mir überhaupt nicht... irgendeine Idee warum ihn der Code nicht die Bohne interessiert? Er gibt keinen Fehler im Script aus - er arbeitet mein Skript ab ohne die Zeile zu beachten bzw umzusetzen.

    LG
    Mirko

  • StringLower richtig einsetzen

    • mirko2002
    • 1. September 2015 um 10:44

    Doch _StringProper führt zum Ziel - wenn man es gezielt einsetzt :)

    Als Beispiel:

    AutoIt
    $origin_city_big = (StringRegExp($s_TextTemplate, "(?<=von)\s*\D{2}-\d*\s*([[:alpha:]]*)", 3))[0]
    $origin_city_small = StringRegExpReplace($s_TextTemplate, (StringRegExp($s_TextTemplate, "(?<=von)\s*\D{2}-\d*\s*([[:alpha:]]*)", 3))[0], _StringProper($origin_city_big))


    Ich will im Text ja wirklich nur die beiden Ortsnamen "ersetzt" haben (die ja jedesmal anders sind und wir vorher auch nicht wissen. Als Transportunternehmen wird es schwer das vor der Anfrage des Kunden schon zu wissen :) ). Andere eventuell gross geschriebene Sachen dürfen gern so bleiben. Daher habe ich den Ort extra per StringRegExp gesucht und anschliessend per _StringProper ersetzt. Macht genau das was es soll und ist weitaus kürzer als oben angegebene Vorschläge - wobei die mir sicher auchd en Weg nach Rom zeigen würden :):):)

  • StringLower richtig einsetzen

    • mirko2002
    • 31. August 2015 um 18:53

    Ah... _StringProper - die Funktion kannste ich noch gar nicht. Alles klar... nach etwas Startschwierigkeiten hab ich einen Code schnipsel der mir nur den gewünschten Ortsnamen klein ändert. Wunderbar...
    vielen Dank für den Hinweis :)

  • StringLower richtig einsetzen

    • mirko2002
    • 31. August 2015 um 17:06

    Hm da komm ich grad nicht ganz mit. Ich arbeite mit meinem String im kompletten Skript bereits in einer Funktion. Ich kann also nicht eine weitere Funktion innerhalb meiner Funktion aufrufen - oder steh ich da gerade auf dem Schlauch?

    Hatte mal probiert, die Funktion nach meiner eigentlichen Funktion aufzurufen aber irgendwie ruft er diese Funktion gar nicht ab...

    Im meiner Funktion, wo eigentlich fast alles im Skript verarbeitet wird, ist der komplette String in der Variable $sOutput17.

    Die Funktion selber rufe ich über einen GUIButton auf und dann rattert er halt meine sehr lange Funktion runter, bis er meinen gewünschten String in der oben genannten Variable hat. Nen Profi wird wahrscheinlich die Hände über den Kopf zusammen schlagen, wenn er meinen Quellcode sieht - aber er tut für mich genau das, was er soll - daher reicht mir das :D

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™