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. Donsen64

Beiträge von Donsen64

  • Datum umwandeln

    • Donsen64
    • 24. Oktober 2018 um 14:40

    Super!!! Vielen Dank ab BugFix und alpines!!!

  • Datum umwandeln

    • Donsen64
    • 24. Oktober 2018 um 13:40

    Hallo,

    ich habe ein Problem mit einem etwas seltsamen Datums Format.

    Ich habe die folgende Liste:

    Code
    "source","End Time","Duration","Protocol"
    xspw2,"Oct 22, 2018 04:00:59 PM",1539340540,tcp
    xspw1,"Oct 22, 2018 04:04:34 PM",1539340540.05,tcp
    xspw1,"Oct 22, 2018 04:22:37 PM",1539340147.9,tcp
    .....

    Um das Datum besser weiter zu verarbeiten, brauche ich aber die Liste im folgenden Format:

    Code
    source,"End Time",Duration,Protocol
    xspw2,2018/10/22 16:00:59,1539340540,tcp
    xspw1,2018/10/22 16:04:34,1539340540.05,tcp
    xspw1,2018/10/22 16:22:37,1539340147.9,tcp
    .....

    Wie ich den Text finden habe ich schon. Aber wie ich das Format geändert bekommen dafür habe ich leider keine Lösung.

    C
    #include <Array.au3>
    #include <String.au3>
    
    Global $aTEMP
    Global $aArray[5] = [4, '"source","End Time","Duration,Protocol"', _
                    'xspw2,"Oct 22, 2018 04:00:59 PM",1539340540,tcp', _
                    'xspw1,"Oct 22, 2018 04:04:34 PM",1539340540.05,tcp', _
                    'xspw1,"Oct 22, 2018 04:22:37 PM",1539340147.9,tcp']
    For $i = 1 To $aArray[0]
        $aTEMP = _StringBetween($aArray[$i], '"', '"')
        _ArrayDisplay($aTEMP, "$aTEMP")
    Next
    
    _ArrayDisplay($aArray, "$aArray")
    Alles anzeigen

    Hat jemand eine Idee wie ich das Datum Umformatieren kann.

    Gruß

    Donsen64

  • Script soll über parallel laufende GUI Lebenszeichen geben

    • Donsen64
    • 10. August 2018 um 16:50

    Hallo autoiter,

    das nenne ich mal eine schnelle Antwort vielen Dank!

    Das sieht sehr gut aus. Eigentlich genau das was ich brauchen würde. Werde ich mir in der nächsten Woche mal ansehen und versuchen in mein Programm zu integrieren.

    Danke!

    Gruß Ingo

  • Script soll über parallel laufende GUI Lebenszeichen geben

    • Donsen64
    • 10. August 2018 um 16:13

    Ich habe immer wieder Aktivitäten in Scripten die sehr lange dauern. Also z.B. wenn eine große Datei kopiert wird oder das Script Dateien auf der Platte bzw. auf einer Netzwerkfreigabe sucht. In der Zeit sieht das Programm für den Anwender so aus als wenn es abgestützt ist oder einfach hängt.

    Jetzt hatte ich die Idee parallel zum Hauptprogramm eine GUI zu erstellen die einfach nur einen Balken hoch laufen lässt und wenn er voll ist bei Null erneut beginnt. Also dem Anwender eine Form der Aktivität vorgaukelt.

    Meine erste Idee war es, dies mit AdlibRegister zu erledigen. Leider musste ich feststellen, dass dies nur läuft wenn das Hauptskript nichts macht.

    Mein zweiter Versuch mit _Timer_SetTimer war auch nicht wirklich erfolgreich, die definierte Funktion wird einfach nicht aufgerufen.

    Kennt jemand dafür eventuell bereits eine Lösung?

  • Excel Prozess wird bei händischen schließen der Arbeitsmappe nicht beendet

    • Donsen64
    • 31. März 2017 um 11:08

    Hallo Water,
    das ist genau die perfekte Lösung!

    Nachdem ich das neue Excel UDF endlich einigermaßen verstanden habe und meine Programme darauf umgestellt habe, finde ich das neue Excel UDF übrigens Perfekt. Vielen Dank dafür! :rock::klatschen:

    Habe mein Programm wie folgt erweitert:

    AutoIt
    ExcelFileOpen()
    ObjEvent($oWorkbook, "ExcelObjEvent_")
    
    
    Func ExcelObjEvent_BeforeClose()
    	;Excel beenden
    	_Excel_Close($oExcel)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Close", "Error closing the Excel application." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    EndFunc
    
    
    Func ExcelFileOpen()
    	;Excel Objekt erstellen
    	$oExcel = _Excel_Open(Default, Default, Default, Default, True)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Open", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    	$oWorkbook = _Excel_BookOpen($oExcel, $XLS_Datei_Name)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Book Open", "Error opening '" & $XLS_Datei_Name & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    EndFunc
    Alles anzeigen

    Gruß Ingo

  • Excel Prozess wird bei händischen schließen der Arbeitsmappe nicht beendet

    • Donsen64
    • 30. März 2017 um 18:22

    Mit dem Objekt geht das scheinbar nicht. Wenn es einmal ein Objekt war bleibt es auch eines. Scheinbar bekommt AutoIt nichts vom Schließen der Arbeitsmappe mit und behält auch die Arbeitsmappen als Objekte im Speicher.

  • Excel Prozess wird bei händischen schließen der Arbeitsmappe nicht beendet

    • Donsen64
    • 30. März 2017 um 18:01

    An so etwas hatte ich auch schon gedacht aber über das Objekt $oWorkbook. Denn wenn der Anwender die Arbeitsmappe geschlossen hat sollte das doch in dem Moment kein Objekt sein. Oder irre ich mich da?

  • Excel Prozess wird bei händischen schließen der Arbeitsmappe nicht beendet

    • Donsen64
    • 30. März 2017 um 17:49

    Hallo,
    ich erstelle mit der folgenden Funktion einen Excel Prozess:

    AutoIt
    Func ExcelFileOpen()
    	;Excel Objekt erstellen
    	$oExcel = _Excel_Open(Default, Default, Default, Default, True)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Open", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    	$oWorkbook = _Excel_BookOpen($oExcel, $XLS_Datei_Name)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Book Open", "Error opening '" & $XLS_Datei_Name & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    EndFunc


    Wenn die Excel Arbeitsmappe mit der folgenden Funktion geschlossen wird ist alles OK:

    Code
    Func ExcelSaveAndQuit()
    	_Excel_BookSave($oWorkbook)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Book Save", "Error saving workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    
    
    	_Excel_Close($oExcel)
    		If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Close", "Error closing the Excel application." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    EndFunc

    Jetzt kommt es aber im Programmverlauf auch vor, dass die Excel Arbeitsmappe zwar über das Programm geöffnet wird, aber dann vom Anwender per Hand geschlossen wird. In einem solchen Fall bleibt dann jedes mal ein toter Excel Prozess im System. Erst wenn auch das AutoIT Programm am Abend geschlossen wird werden die ganzen toten Excel Prozesse beendet.

    Hat jemand eine Idee wie ich das lösen könnte?

    Gruß Ingo

  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 29. Januar 2016 um 15:00

    Hallo,
    leider ist das Ergebnis doch noch nicht wirklich richtig bzw. optimal.Wenn ich das folgende Starte:

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aErgebnis
    
    
    $sText = "Antwort von 2001:0db8:85a3:08d3:1319:8a2e:0370: Zeit=42ms" & _
    		 "Antwort von 2001:0db8:85a3:08d3:1319:8a2e:0370: Zeit=44ms" & _
    		 "Antwort von 2001:0db8:85a3:08d3:1319:8a2e:0370: Zeit=41ms" & _
    		 "So lautet das Präfix		2001:0db8:85a3:08d3::/64"
    
    
    $aErgebnis = _StringSearchIPv6($sText)
    
    
    _ArrayDisplay($aErgebnis)
    
    
    Func _StringSearchIPv6($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "([0-9a-fA-F]{1,4}:{0,2}){7,8}|([0-9a-fA-F]{1,4}:{2})"
    
    
       ;im Text nach IPv6 suchen
       $aTEMP = StringRegExp($sText, $sPattern, 4)
    
    
       If IsArray($aTEMP) = 1 Then
    	  $aResult[0] = 0
    	  For $i=0 To UBound($aTEMP)-1
    		 $aTEMP2 = $aTEMP[$i]
    		 If StringInStr($aTEMP2[0], ":") <> 0 Then
    			_ArrayAdd($aResult, $aTEMP2[0])
    			$aResult[0] = $aResult[0] +1
    		 EndIf
    	  Next
    	  Return($aResult)
       Else
    		Return 0 ;Nix gefunden
       EndIf
    EndFunc
    Alles anzeigen

    Findet er leider so etwas: "2001:0db8:85a3:08d3:1319:8a2e:0370:" Also die IPv6 Endet auf einen Doppelpunkt. Das darf aber nicht sein. Nur der letzte Eintrag mit zwei Doppelpunkten am Ende "2001:0db8:85a3:08d3::" ist richtig und gültig.


    Hat jemand eine Idee wie ich den einfachen Doppelpunkt am Ende verhindern kann?


    Gruß Ingo

  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 3. Dezember 2015 um 14:37

    Hallo,
    so habe es nochmal angepasst. Jetzt sollte es hoffentlich alles gewesen sein.

    Gruß Ingo

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aErgebnis
    
    
    $sText = "Quelle: https://de.wikipedia.org/wiki/IPv6" & _
    		 "Die textuelle Notation von IPv6-Adressen ist in Abschnitt 2.2 von RFC 4291 beschrieben:" & _
    		 "1. IPv6-Adressen werden gewöhnlicherweise hexadezimal (IPv4: dezimal) notiert, wobei die Zahl in acht Blöcke zu jeweils 16 Bit (4 Hexadezimalstellen) unterteilt wird. Diese Blöcke werden durch Doppelpunkte (IPv4: Punkte) getrennt notiert: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344." & _
    		 "2. Führende Nullen innerhalb eines Blockes dürfen ausgelassen werden: 2001:0db8:0000:08d3:0000:8a2e:0070:7344 ist gleichbedeutend mit 2001:db8:0:8d3:0:8a2e:70:7344." & _
    		 "3. Ein oder mehrere aufeinander folgende Blöcke, deren Wert 0 (bzw. 0000) beträgt, dürfen ausgelassen werden. Dies wird durch zwei aufeinander folgende Doppelpunkte angezeigt: 2001:0db8:0:0:0:0:1428:57ab ist gleichbedeutend mit 2001:db8::1428:57ab.[20]" & _
    		 "4. Die Reduktion durch Regel 3 darf nur einmal durchgeführt werden, das heißt, es darf höchstens eine zusammenhängende Gruppe aus Null-Blöcken in der Adresse ersetzt werden. Die Adresse 2001:0db8:0:0:8d3:0:0:0 darf demnach entweder zu 2001:db8:0:0:8d3:: oder 2001:db8::8d3:0:0:0 gekürzt werden; 2001:db8::8d3:: ist unzulässig, da dies mehrdeutig ist und fälschlicherweise z. B. auch als 2001:db8:0:0:0:8d3:0:0 interpretiert werden könnte. Es empfiehlt sich den Block mit den meisten Null-Blöcken zu kürzen." & _
    		 "5. Ebenfalls darf für die letzten vier Bytes (also 32 Bits) der Adresse die herkömmliche dezimale Notation verwendet werden. So ist ::ffff:127.0.0.1 eine alternative Schreibweise für ::ffff:7f00:1. Diese Schreibweise wird vor allem bei Einbettung des IPv4-Adressraums in den IPv6-Adressraum verwendet." & _
    		 "URL-Notation von IPv6-Adressen" & _
    		 "In einer URL wird die IPv6-Adresse in eckige Klammern eingeschlossen,[21] z. B.:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]/" & _
    		 "Diese Notation verhindert die fälschliche Interpretation von Portnummern als Teil der IPv6-Adresse:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:8080/ " & _
    		 " DHCPv6-IAID . . . . . . . . . . . : 356792294 C:\Users\cc00815> "
    
    
    $aErgebnis = _StringSearchIPv6($sText)
    
    
    _ArrayDisplay($aErgebnis)
    
    
    Func _StringSearchIPv6($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "([0-9a-fA-F]{1,4}:{0,2}){7,8}|([0-9a-fA-F]{1,4}:{2})"
    
    
       ;im Text nach IPv6 suchen
       $aTEMP = StringRegExp($sText, $sPattern, 4)
    
    
       If IsArray($aTEMP) = 1 Then
    	  $aResult[0] = 0
    	  For $i=0 To UBound($aTEMP)-1
    		 $aTEMP2 = $aTEMP[$i]
    		 If StringInStr($aTEMP2[0], ":") <> 0 Then
    			_ArrayAdd($aResult, $aTEMP2[0])
    			$aResult[0] = $aResult[0] +1
    		 EndIf
    	  Next
    	  Return($aResult)
       Else
    		Return 0 ;Nix gefunden
       EndIf
    EndFunc
    Alles anzeigen
  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 2. Dezember 2015 um 16:26

    Hallo,
    die Idee mit dem Doppelpunkt ist eigentlich nicht schlecht. Wenn kein Doppelpunkt drin ist, ist es keine IPv6 Adresse. Werde ich mir mal ansehen.

    Vielen Dank für eure Hinweise.

    Gruß Ingo

  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 2. Dezember 2015 um 12:50

    Hallo,
    leider war es noch nicht wirklich die endgültige Lösung für mein Problem. In einem Text wie:
    DHCPv6-IAID . . . . . . . . . . . : 356792294 C:\Users\cc00815>

    Findet er leider die folgenden zwei "IPv6 Adressen":
    356792294
    cc00815

    Hat jemand eine Idee wir ich das verhindern kann?

    Gruß Ingo

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aErgebnis
    
    
    $sText = "Quelle: https://de.wikipedia.org/wiki/IPv6" & _
    		 "Die textuelle Notation von IPv6-Adressen ist in Abschnitt 2.2 von RFC 4291 beschrieben:" & _
    		 "1. IPv6-Adressen werden gewöhnlicherweise hexadezimal (IPv4: dezimal) notiert, wobei die Zahl in acht Blöcke zu jeweils 16 Bit (4 Hexadezimalstellen) unterteilt wird. Diese Blöcke werden durch Doppelpunkte (IPv4: Punkte) getrennt notiert: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344." & _
    		 "2. Führende Nullen innerhalb eines Blockes dürfen ausgelassen werden: 2001:0db8:0000:08d3:0000:8a2e:0070:7344 ist gleichbedeutend mit 2001:db8:0:8d3:0:8a2e:70:7344." & _
    		 "3. Ein oder mehrere aufeinander folgende Blöcke, deren Wert 0 (bzw. 0000) beträgt, dürfen ausgelassen werden. Dies wird durch zwei aufeinander folgende Doppelpunkte angezeigt: 2001:0db8:0:0:0:0:1428:57ab ist gleichbedeutend mit 2001:db8::1428:57ab.[20]" & _
    		 "4. Die Reduktion durch Regel 3 darf nur einmal durchgeführt werden, das heißt, es darf höchstens eine zusammenhängende Gruppe aus Null-Blöcken in der Adresse ersetzt werden. Die Adresse 2001:0db8:0:0:8d3:0:0:0 darf demnach entweder zu 2001:db8:0:0:8d3:: oder 2001:db8::8d3:0:0:0 gekürzt werden; 2001:db8::8d3:: ist unzulässig, da dies mehrdeutig ist und fälschlicherweise z. B. auch als 2001:db8:0:0:0:8d3:0:0 interpretiert werden könnte. Es empfiehlt sich den Block mit den meisten Null-Blöcken zu kürzen." & _
    		 "5. Ebenfalls darf für die letzten vier Bytes (also 32 Bits) der Adresse die herkömmliche dezimale Notation verwendet werden. So ist ::ffff:127.0.0.1 eine alternative Schreibweise für ::ffff:7f00:1. Diese Schreibweise wird vor allem bei Einbettung des IPv4-Adressraums in den IPv6-Adressraum verwendet." & _
    		 "URL-Notation von IPv6-Adressen" & _
    		 "In einer URL wird die IPv6-Adresse in eckige Klammern eingeschlossen,[21] z. B.:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]/" & _
    		 "Diese Notation verhindert die fälschliche Interpretation von Portnummern als Teil der IPv6-Adresse:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:8080/ " & _
    		 " DHCPv6-IAID . . . . . . . . . . . : 356792294 C:\Users\cc00815> "
    
    
    $aErgebnis = _StringSearchIPv6($sText)
    
    
    _ArrayDisplay($aErgebnis)
    
    
    Func _StringSearchIPv6($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "([0-9a-fA-F]{1,4}:{0,2}){7,8}|([0-9a-fA-F]{1,4}:{2})"
    
    
       ;im Text nach IPv6 suchen
       $aTEMP = StringRegExp($sText, $sPattern, 4)
    
    
       If IsArray($aTEMP) = 1 Then
    	  $aResult[0] = 0
    	  For $i=0 To UBound($aTEMP)-1
    		 $aTEMP2 = $aTEMP[$i]
    		 _ArrayAdd($aResult, $aTEMP2[0])
    		 $aResult[0] = $aResult[0] +1
    	  Next
    	  Return($aResult)
       Else
    		Return 0 ;Nix gefunden
       EndIf
    EndFunc
    Alles anzeigen
  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 20. November 2015 um 21:09

    Hallo,
    manchmal ist es nicht schlecht wenn man nochmal zum Nachdenken gebracht wird. Ich habe mich nochmals mit der Problematik Pattern beschäftigt und mit erstaunen festgestellt, dass es nicht wirklich so schwer ist wie ich immer angenommen haben. Also vielen Dank für eure Anstöße dazu. :thumbup:

    Ich habe also ein Pattern gebaut welches fast alle Schreibweisen, die in der Wikipedia beschrieben werden, abdeckt. Lediglich der Punkt 5 also die Ergebnisse 11 und 12 sind nicht wirklich richtig. Diese sind aber in der Praxis nicht so relevant. Auch die Schreibweisen der Netznotation, also mit Netzwerkmaske (z.B. 2001:0db8:1234::/48) sind nicht mit drin. Aber eventuell mache ich mich da nochmals ran.

    Gruß Ingo

    AutoIt
    #include <Array.au3>
    Local $sText
    Local $aErgebnis
    $sText = "Quelle: https://de.wikipedia.org/wiki/IPv6" & _
    		 "Die textuelle Notation von IPv6-Adressen ist in Abschnitt 2.2 von RFC 4291 beschrieben:" & _
    		 "1. IPv6-Adressen werden gewöhnlicherweise hexadezimal (IPv4: dezimal) notiert, wobei die Zahl in acht Blöcke zu jeweils 16 Bit (4 Hexadezimalstellen) unterteilt wird. Diese Blöcke werden durch Doppelpunkte (IPv4: Punkte) getrennt notiert: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344." & _
    		 "2. Führende Nullen innerhalb eines Blockes dürfen ausgelassen werden: 2001:0db8:0000:08d3:0000:8a2e:0070:7344 ist gleichbedeutend mit 2001:db8:0:8d3:0:8a2e:70:7344." & _
    		 "3. Ein oder mehrere aufeinander folgende Blöcke, deren Wert 0 (bzw. 0000) beträgt, dürfen ausgelassen werden. Dies wird durch zwei aufeinander folgende Doppelpunkte angezeigt: 2001:0db8:0:0:0:0:1428:57ab ist gleichbedeutend mit 2001:db8::1428:57ab.[20]" & _
    		 "4. Die Reduktion durch Regel 3 darf nur einmal durchgeführt werden, das heißt, es darf höchstens eine zusammenhängende Gruppe aus Null-Blöcken in der Adresse ersetzt werden. Die Adresse 2001:0db8:0:0:8d3:0:0:0 darf demnach entweder zu 2001:db8:0:0:8d3:: oder 2001:db8::8d3:0:0:0 gekürzt werden; 2001:db8::8d3:: ist unzulässig, da dies mehrdeutig ist und fälschlicherweise z. B. auch als 2001:db8:0:0:0:8d3:0:0 interpretiert werden könnte. Es empfiehlt sich den Block mit den meisten Null-Blöcken zu kürzen." & _
    		 "5. Ebenfalls darf für die letzten vier Bytes (also 32 Bits) der Adresse die herkömmliche dezimale Notation verwendet werden. So ist ::ffff:127.0.0.1 eine alternative Schreibweise für ::ffff:7f00:1. Diese Schreibweise wird vor allem bei Einbettung des IPv4-Adressraums in den IPv6-Adressraum verwendet." & _
    		 "URL-Notation von IPv6-Adressen" & _
    		 "In einer URL wird die IPv6-Adresse in eckige Klammern eingeschlossen,[21] z. B.:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]/" & _
    		 "Diese Notation verhindert die fälschliche Interpretation von Portnummern als Teil der IPv6-Adresse:" & _
    		 "http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:8080/ "
    $aErgebnis = _StringSearchIPv6($sText)
    _ArrayDisplay($aErgebnis)
    Func _StringSearchIPv6($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "([0-9a-fA-F]{1,4}:{0,2}){7,8}|([0-9a-fA-F]{1,4}:{2})"
       ;im Text nach IPv6 suchen
       $aTEMP = StringRegExp($sText, $sPattern, 4)
       If IsArray($aTEMP) = 1 Then
    	  $aResult[0] = 0
    	  For $i=0 To UBound($aTEMP)-1
    		 $aTEMP2 = $aTEMP[$i]
    		 _ArrayAdd($aResult, $aTEMP2[0])
    		 $aResult[0] = $aResult[0] +1
    	  Next
    	  Return($aResult)
       Else
    		Return 0 ;Nix gefunden
       EndIf
    EndFunc
    Alles anzeigen
  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 19. November 2015 um 15:00

    Hallo,
    vielen Dank für eure Hinweise.

    Im Bezug auf dem zu durchsuchenden Text wollte ich es möglichst sehr flexibel haben, denn der Text soll später aus sehr verschiedenen Quellen kommen. Also möglichst eine universelle AutoIT Funktion die in einem Text nach IPv6 Adressen suchen kann. Außerdem ist es bei IPv6 etwas Komplex mit den vielen zugelassenen verschiedenen Schreibweisen. Im Kommentar der Pattern sind die vielen möglichen Schreibweisen zu sehen. In meinem Programmbeispiel hatte ich eine Text als Beispiel für den zu durchsuchenden Text drin:

    AutoIt
    $sText = "Temporäre IPv6-Adresse. . . . . . : 2003:cc:dcaa:9434:ac3a:8900:3340:3cc1 " & _
    		 "7.25.23.2 " & _
    		 "Verbindungslokale IPv6-Adresse  . : fe80::dcaa:f15e:50a4:aa09%13"

    Im Bezug zu dem Pattern kann ich nur sagen, dass ich viele verschiedenen getestet habe. Aber leider hat keine ein Ergebnis gebracht. Das Pattern welches ich in dem Beispiel drin habe scheint aus meiner Sicht aber die größte Abdeckung für verschiedene Schreibweisen zu haben. Aber auch die hier aus dem AutoIT Forum stammenden Pattern (von hier) funktionieren nicht. Irgendwie mache ich da wohl etwas grundsätzliches falsch.

    Gruß Ingo

  • IPv6 Adresse in Text suchen​

    • Donsen64
    • 17. November 2015 um 17:13

    Hallo,
    ich möchte in einem Text alle IPv6 Adressen suchen. Ich habe auch schon etwas zusammen gebaut. Aber leider funktioniert es nicht. Ich vermute, dass es mit dem Pattern zusammen hängt. Wenn ich das Pattern für die IPv4 verwende ist alles super. Aber die Pattern für IPv6 funktioniert nicht. habe auch die hier im Forum vorhandenen Pattern getestet. Leider gehen die auch nicht.


    Ich hoffe es hat jemand einen Tipp bzw. eine Lösung für mich.


    Gruß Ingo

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aErgebnis
    
    
    $sText = "Temporäre IPv6-Adresse. . . . . . : 2003:cc:dcaa:9434:ac3a:8900:3340:3cc1 " & _
    		 "7.25.23.2 " & _
    		 "Verbindungslokale IPv6-Adresse  . : fe80::dcaa:f15e:50a4:aa09%13"
    
    
    $aErgebnis = _StringSearchIPv6($sText)
    
    
    For $i=0 To UBound($aErgebnis)-1
       _ArrayDisplay($aErgebnis[$i])
    Next
    
    
    Func _StringSearchIPv6($sText)
    	Local $aResult
    	Local $aTEMP
    	Local $sPattern =  	"(?x)																									" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|          # 1:2:3:4:5:6:7:8 									" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,7}:|                         # 1::                              1:2:3:4:5:6:7::	" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|         # 1::8             1:2:3:4:5:6::8  1:2:3:4:5:6::8	" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|  # 1::7:8           1:2:3:4:5::7:8  1:2:3:4:5::8		" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|  # 1::6:7:8         1:2:3:4::6:7:8  1:2:3:4::8		" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|  # 1::5:6:7:8       1:2:3::5:6:7:8  1:2:3::8			" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|  # 1::4:5:6:7:8     1:2::4:5:6:7:8  1:2::8			" & @CRLF & _
    						"[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|       # 1::3:4:5:6:7:8   1::3:4:5:6:7:8  1::8  			" & @CRLF & _
    						":((:[0-9a-fA-F]{1,4}){1,7}|:)|                     # ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8 ::8       ::    	" & @CRLF & _
    						"fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|     # fe80::7:8%eth0   fe80::7:8%1     (link-local IPv6 addresses with zone index)" & @CRLF & _
    						"::(ffff(:0{1,4}){0,1}:){0,1}						#													" & @CRLF & _
    						"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}	#													" & @CRLF & _
    						"(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|          # ::255.255.255.255   ::ffff:255.255.255.255  ::ffff:0:255.255.255.255  (IPv4-mapped IPv6 addresses and IPv4-translated addresses)" & @CRLF & _
    						"([0-9a-fA-F]{1,4}:){1,4}:							#													" & @CRLF & _
    						"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}	#													" & @CRLF & _
    						"(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])           # 2001:db8:3:4::192.0.2.33  64:ff9b::192.0.2.33 (IPv4-Embedded IPv6 Address)" & @CRLF & _
    						")? "
    
    
    
    
    ;~    Local $sPattern = 	"(?x)                                                                                                                     " & @CRLF & _
    ;~ 					   "((?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(?=\.?\d)\.)){4}\b)      # erste IP-Adresse (mit Wertebereichscheck)                        " & @CRLF & _
    ;~ 					   "(?:                                                               # Beginn der optionalen Netzmaske                                  " & @CRLF & _
    ;~ 					   "    \s?/?\s?                                                      # das optionale Trennzeichen mit eventuellen Leerzeichen           " & @CRLF & _
    ;~ 					   "    \b(                                                           # falls etwas existiert soll es auch als Group gematcht werden     " & @CRLF & _
    ;~ 					   "        ([0-9]|[0-2][0-9]|3[0-2])(?!\.)                           # Die Netzmaske als einfache Zahl (=Anzahl der 1-Bits in der Maske)" & @CRLF & _
    ;~ 					   "        |                                                                                                                            " & @CRLF & _
    ;~ 					   "        (?:(?:0|128|192|224|240|248|252|254)\.0\.0\.0)|(?:255\.(?:(?:(?:0|128|192|224|240|248|252|254)\.0\.0)|(?:255\.(?:(?:(?:0|128|192|224|240|248|252|254)\.0)|255\.(?:0|128|192|224|240|248|252|254|255)))))  # Die Netzmaske als IP-Maske                                       " & @CRLF & _
    ;~ 					   "    )(?:[^\d]|$)                                                                                                                     " & @CRLF & _
    ;~ 					   ")?"
    
    
    
    
    	;im Text nach IP oder Netzwerke suchen
    	$aResult = StringRegExp($sText, $sPattern, 4)
    
    
       Return $aResult
    EndFunc
    Alles anzeigen
  • Func (Parameter) Verständnisfrage

    • Donsen64
    • 5. November 2015 um 11:05

    Hallo,
    du musst dir die übergebenen Werte einfach als Variablen in der Funktion vorstellen die einen Wert von Außen bekommen bzw. bereits einen vordefinierten Wert haben, wie bei $Text3.

    Übrigens ist das auch der große Vorteil einer Funktion. Du hast definierte Übergabewerte und einen definierten Rückgabewert. Was dazwischen passiert ist nicht relevant und kann daher beliebig verändert werden.

    Gruß Ingo

    AutoIt
    MeineFunktion("Das ist der Text 1", "Das idt der Text 2")
    MeineFunktion("Das ist der Text 1", "Das idt der Text 2", "Hier haben wir auch einen Text 3")
    
    
    Func MeineFunktion($Text1, $Text2, $Text3="das ist Text 3 wenn nichts Übergeben")
       MsgBox(1, "Text 1", $Text1)
       MsgBox(1, "Text 2", $Text2)
       MsgBox(1, "Text 3", $Text3)
    EndFunc
  • ​In einem Text nach FQDN Server Namen suchen

    • Donsen64
    • 5. November 2015 um 10:53

    Hallo,
    ist vielleicht nicht schön aber eine Lösung. Vielen Dank dafür. Ich habe das mal eingebaut und noch zusätzlich die Suche auf die klassischen Top Domänen (.com, .de, .fr ...) eingegrenzt. Die neuen langen Namen (.berlin ...) sind für nicht nicht so relevant.

    Gruß Ingo

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aFQDNs
    
    
    $sText = "server.domaene.com ist mein Server die URL ist aber http://server5.domaene.de/de-de/ es kann aber auch der Server server2.temp.Domaene3.FR sein der Text ist aus test.txt kopiert. Erweiterter Test server2.temp.Domaene3.Morgen ist Freitag."
    
    
    $aFQDNs = _StringSearchFQDN($sText)
    
    
    If IsArray($aFQDNs) = 1 Then
       _ArrayDisplay($aFQDNs)
    Else
       MsgBox(1, "Error", "Nichts gefunden")
    EndIf
    
    
    Func _StringSearchFQDN($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "(?x)\b((?=[a-zA-Z0-9-]{1,63}\.)(xn--)?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,3}\b "
    
    
    	;im Text nach FQDNs suchen
    	$aTEMP = StringRegExp($sText, $sPattern, 4)
    
    
    	;Ergebnis verarbeiten
    	If IsArray($aTEMP) = 1 Then
    	   $aResult[0] = 0
    		For $i=0 To UBound($aTEMP)-1
    		    $aTEMP2 = $aTEMP[$i]
    			;nur um in @extended die Anzahl der Punkte zu bekommen erfolgt der Aufruf von StringReplace
    			StringReplace($aTEMP2[0], ".", "-")
    			If @extended >= 2 Then
    			   _ArrayAdd($aResult, $aTEMP2[0])
    			   $aResult[0] = $aResult[0]+1
    			EndIf
    		Next
    		Return($aResult)
    	Else
    		Return 0 ;Nix gefunden
    	EndIf
     EndFunc
    Alles anzeigen
  • ​In einem Text nach FQDN Server Namen suchen

    • Donsen64
    • 4. November 2015 um 17:14

    Hallo,
    leider funktioniert es noch nicht richtig. Denn wenn ich den Folgenden Text an die Funktion übergebe:

    Code
    $sText = "server.domaene.com ist mein Server die URL ist aber http://server5.domaene.de/de-de/ es kann aber auch der Server server2.temp.Domaene3.FR sein der Text ist aus test.txt kopiert"

    Erkennt er auch test.txt als Server. Ein echter FQDN Server Name muss aber mindestens zwei Punkte enthalten.

    Wie kann ich das noch mit einbauen?

    Gruß Ingo

  • ​In einem Text nach FQDN Server Namen suchen

    • Donsen64
    • 4. November 2015 um 15:40

    Hallo Andy,
    ich hatte schon im Internet gesucht und etwas zusammen gebaut. Aber leider hatte ich in meiner Funktion die Return Zeile vergessen. Daher habe ich immer eine 0 zurück bekommen, was mich zum verzweifeln gebracht hat. Aber manchmal helfen auch 1 Stunde Pause um ein Problem zu lösen. :party:

    Für alle die auch FQDN Namen in einem Text suchen wollen/müssen hier die fertige Funktion. :D

    Gruß Ingo

    AutoIt
    #include <Array.au3>
    
    
    Local $sText
    Local $aFQDNs
    
    
    $sText = "server.domaene.com ist mein Server die URL ist aber http://server5.domaene.de/de-de/ es kann aber auch der Server server2.temp.Domaene3.FR sein"
    
    
    $aFQDNs = _StringSearchFQDN($sText)
    
    
    If IsArray($aFQDNs) = 1 Then
       _ArrayDisplay($aFQDNs)
    Else
       MsgBox(1, "Error", "Nichts gefunden")
    EndIf
    
    
    Func _StringSearchFQDN($sText)
    	Local $aResult[1]
    	Local $aTEMP
    	Local $aTEMP2
    	Local $sPattern = "(?x)\b((?=[a-zA-Z0-9-]{1,63}\.)(xn--)?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,63}\b "
    
    
    	;im Text nach FQDNs suchen
    	$aTEMP = StringRegExp($sText, $sPattern, 4) 
    
    
    	;Ergebnis verarbeiten
    	If IsArray($aTEMP) = 1 Then
    	   $aResult[0] = 0
    		For $i=0 To UBound($aTEMP)-1
    		    $aTEMP2 = $aTEMP[$i]
    			_ArrayAdd($aResult, $aTEMP2[0])
    			$aResult[0] = $aResult[0]+1
    		Next
    		Return($aResult)
    	Else
    		Return 0 ;Nix gefunden
    	EndIf
    EndFunc
    Alles anzeigen
  • ​In einem Text nach FQDN Server Namen suchen

    • Donsen64
    • 4. November 2015 um 13:18

    Hallo,
    ich habe mal wieder ein Problem, dass ich in einem Text nach etwas suchen möchte. Es geht um Fully Qualified Domain Name (FQDN).
    Ich habe zum Beispiel den folgenden Text:

    Code
    $sText = "server.domaene.com ist mein Server die URL ist aber http://server5.domaene.de/de-de/ es kann aber auch der Server server2.temp.Domaene3.FR sein"

    Im Text sind einige Server Namen versteckt die ich herausfiltern möchte. Ich weiß, dass es mit StringRegExp möglich ist. Nur leider bin ich zu blöd das entsprechende Pattern dazu zu erstellen.

    Als Ergebnis würde ich gern die folgende Liste von Server Namen haben wollen:
    server.domaene.com
    server5.domaene.de
    server2.temp.Domaene3.FR

    Würde mich freuen wenn mir jemand bei dem Pattern helfen könnte.

    Gruß Ingo

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™