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

Beiträge von Moombas

  • TV Senderliste bearbeiten

    • Moombas
    • 14. Dezember 2022 um 07:56

    @Musashi : Ich weiß ja nicht, ob es einen Unterschied zwischen den Daten gibt (nicht geprüft), wenn man das mit inetgetsource ausließt und wenn man die Webseite per Rechtsklick speichert aber bei mir (Speichern) ist dort kein Leerzeichen und damit passt das Regex dort (mit Lerrzeichen) nicht. Geprüft auf der oben angegebenen Seite. Im Anhang meine HTML und auch die jeweiligen Prüfungen.

    Noch deutlicher wird es wenn ich nur "<div class="col freqx_1">" als Regex nehme, ohne Leerzeichen 247 Matches, mit Leerzeichen keins.

    Macht Inetgetsource also etwas anders?

    Dateien

    pattern dieselwiesel.png 81,7 kB – 0 Downloads Pattern Velted.jpg 188,16 kB – 0 Downloads my pattern.jpg 252,07 kB – 0 Downloads Unverschlüsselte TV Programme aus Deutschland auf Astra 19.2° Ost.html.txt 317,61 kB – 915 Downloads
  • TV Senderliste bearbeiten

    • Moombas
    • 13. Dezember 2022 um 15:58
    Zitat von Velted

    Moin,

    beim Regex fehlt ein Leerzeichen: <div class="col freqx_1" >

    Wie kommst du darauf? Bei mir ist dort kein Leerzeichen.

  • TV Senderliste bearbeiten

    • Moombas
    • 13. Dezember 2022 um 10:12

    Bin nicht besonders gut in regex aber probier es mal so: \<div class\=\"col freqx_1\"\>(.{0,})\<\/div\> bzw. wenn du auch die anderen haben willst: \<div class\=\"col\d? freqx_\d\"\>(.{0,})\<\/div\>

    Testen kannst du gut hier: https://regex101.com/

  • TV Senderliste bearbeiten

    • Moombas
    • 13. Dezember 2022 um 08:57

    Also, du kannst natürlich die Webseite herunterladen (rechtsklick, speichern), dort hast du alle Informationen in der html, die du auch im Browser angezeigt bekommst.

    Die müsstest du dann natürlich durch ackern.

    Das ist jedoch der unschöne und teil-manuelle Weg.

    Es gibt jedoch auch UDF's für Chrome um die Webseiten-Daten auszulesen. Damit habe ich mich persönlich jedoch nicht beschäftigt, müsste aber dir die Möglichkeit geben darüber die Daten evtl. zu holen.

  • Hilfe bei Regex

    • Moombas
    • 6. Dezember 2022 um 12:02

    Sorge einfach dafür das in beiden UDF keine doppelten Namen vorkommen und dann kannst du beide verwenden (natürlich musst du dann auch die entsprechenden Aufrufe abändern).

  • Hilfe bei Regex

    • Moombas
    • 6. Dezember 2022 um 10:52

    Ich bin absolut kein Json-Mensch aber für mich sieht es aus als ob er die jeweilig übergebenen Strings nicht verarbeiten kann.

    Prüfe doch mal deren Inhalt vor der Übergabe an die Funktion (Ausgabe in eine Datei oder Consolewrite).

  • doppelte Einträge, in einem bestimmten Zeitraum löschen

    • Moombas
    • 5. Dezember 2022 um 08:02

    Witzig, das mir das auch entgangen ist mit der Anzahl :D

    Zitat von MojoeB

    @Moombas

    mit deinem Skript bekomme ich bei geänderter *csv Fehler im Array angezeigt.
    also bei dem ersten Eintrag [0][1]stand da 4:00 <- da wusste ich jetzt nicht wo ich es zuordnenden sollte war das die Zeit?

    ps: irgendwie hab ich hier ein Problem mit der Schriftform & größe ich habe alles markiert aber nur ein Teil lässt sich ändern.

    Es ist schwer dazu etwas zu sagen, ich vermute das es da ggf. Probleme mit dem Reg-Ex gibt(?), da zweistellige (in deinem Beispiel: 04:00) erwartet werden.

    Hierbei wäre es gut die CSV bzw. die Daten, wo der Fehler auftritt zu haben. Aber schaue dir doch erst mal die neue Lösung von AspirinJunkie in Post #8 an, evtl. passt die ja schon zu dem was du suchst, da ich bei mir noch die Anzahl auch noch mit einbauen müsste (sollte aber machbar sein).

    Wenn das von Aspirin widererwartend noch nicht passen sollte gerne die angesprochenen Sachen mal posten und dann schaue ich bei mir nochmal rein ;)

  • doppelte Einträge, in einem bestimmten Zeitraum löschen

    • Moombas
    • 2. Dezember 2022 um 15:17

    Hier mal die Überarbeitete Version mit dem RegEx von AspirinJunkie (sorry fürs klauen :P)

    Damit sollte das Problem mit dem Datum bei mir auch behoben sein.

    AutoIt
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #include <Array.au3>
    #include <File.au3>
    
    Global $Array
    
    _FileReadToArray('Test.txt', $Array, Default, ';')
    _ArrayDisplay($Array)
    _ArrayDisplay(RemoveDoubles($Array))
    
    Func RemoveDoubles($aArray)
    Local $Search
        For $i = 0 To $aArray[0][0]
            $aArray[$i][1] = StringRegExpReplace($aArray[$i][1] & ":00", "(\d\d)\/(\d\d)\/(\d{4})\h(\d\d):(\d\d):(\d\d)(.*)", "$3/$2/$1 $4:$5:$6")
        Next
    
        _ArraySort($aArray, Default, 1, Default, 1)
            For $Row = $aArray[0][0] to 1 Step - 1
                $Search = _ArrayFindAll($aArray, $aArray[$Row][0], 1)
                _ArrayInsert($Search, 0, Ubound($Search), 0)
                if $Search[0] > 1 Then
                    For $iSearch = $Search[0] to 2 Step - 1
                        _ArrayDelete($aArray, $Search[$iSearch])
                        $Row -= 1
                    Next
                EndIf
                $aArray[0][0] = UBound($aArray)  - 1
            Next
        _ArraySort($aArray, Default, 1)
        Return $aArray
    EndFunc
    Alles anzeigen
  • doppelte Einträge, in einem bestimmten Zeitraum löschen

    • Moombas
    • 2. Dezember 2022 um 15:01

    Mein Vorschlag wäre so:

    AutoIt
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #include <Array.au3>
    #include <File.au3>
    
    Global $Array
    
    _FileReadToArray('Test.txt', $Array, Default, ';')
    _ArrayDisplay($Array)
    _ArrayDisplay(RemoveDoubles($Array))
    
    Func RemoveDoubles($aArray)
    Local $Search
        _ArraySort($aArray, Default, 1, 1, 1)
        For $Row = $aArray[0][0] to 1 Step - 1
            $Search = _ArrayFindAll($aArray, $aArray[$Row][0], 1)
            _ArrayInsert($Search, 0, Ubound($Search), 0)
            if $Search[0] > 1 Then
                For $iSearch = $Search[0] to 2 Step - 1
                    _ArrayDelete($aArray, $Search[$iSearch])
                    $Row -= 1
                Next
            EndIf
            $aArray[0][0] = UBound($aArray)  - 1
        Next
        Return $aArray
    EndFunc
    Alles anzeigen

    Wobei es dann Probleme bei anderem Datum geben würde (wenn mehr als 1 Tag vorhanden ist), sehe ich gerade.

    Ich denke da ist das von AspirinJunkie besser :)

  • Bug bei Struct (Dot-Notation)

    • Moombas
    • 2. Dezember 2022 um 09:56

    Danke AspirinJunkie für die Aufklärung, bin etwas beruhigt, das ich das Ding dann doch noch richtig kapiert habe ;)

  • Bug bei Struct (Dot-Notation)

    • Moombas
    • 2. Dezember 2022 um 08:19

    Mal eine ganz blöde Frage zu den Structs, wenn ichs richtig sehe hier, gibt die Zahl in den Klammern, die Anzahl der Elemente an. Sprich:

    struct;char Name[4];char id[36];endstruct

    Beinhaltet im Bereich Name 4 Elemente und id 36 Elemente, richtig?

    Oder ist das nur beim Typ "data" der Fall und meine bisherige Annahme, das dies die maximale Zeichenlänge angibt, ist richtig?

  • Einfaches COPY PASTE aus Excel Datei

    • Moombas
    • 1. Dezember 2022 um 08:16

    Und wegen der Webseite, auch dort gibt es andere Möglichkeiten. Beispiel: https://www.autoitscript.com/forum/topic/154439-chrome-udf/

  • PLZ Koordinaten

    • Moombas
    • 30. November 2022 um 14:38

    Das ist richtig.

    Aber mir war wichtig eine allgemein (vom Prinzip) immer wieder verwendbare Funktion z.B. zum Senden des http requests zu haben.

    Zudem erwarte ich meistens entweder einen String oder Array zurück bisher (API Calls), da war diese (simple) obige Variante bisher sehr zuverlässig (mit kleinen individuellen Anpassungen weil wegen Authentifizierung etc.). Mittlerweile habe ich weitaus umfangreichere um div. Authentifizierungen abzubilden, die wären für diesen Fall aber definitiv oversized gewesen.

    Und Regex ist wie gesagt nicht mein Steckenpferd.

    Dennoch kurze und knappe Lösung deinerseits für solche denen das so reicht ;)  Oscar

  • PLZ Koordinaten

    • Moombas
    • 30. November 2022 um 13:26

    Hi, sieht interessant aus und definitv twas was ich leider nicht verstehe ;)

    Alternativ habe ich für meine Zwecke das, dank AspirinJunkie, so umgesetzt:

    AutoIt
    Consolewrite(GetCoordinates('Platz der Republik 1, 11011 Berlin') & @CRLF)
    
    Func GetCoordinates($Address)
    Local $Result, $Lat, $Lon
        $Address = Stringreplace($Address, ' ', '+')
        $Result  = SendRequest($Address, 'GET', 'nominatim.openstreetmap.org')
        $Lat     = Stringsplit(Stringsplit($Result, "lat='", $STR_ENTIRESPLIT)[2], "'")[1]
        $Lon     = Stringsplit(Stringsplit($Result, "lon='", $STR_ENTIRESPLIT)[2], "'")[1]
        Return $Lat & ',' & $Lon
    EndFunc
    
    Func SendRequest($Target, $RequestType, $TargetIP)
    Local $Url, $oHTTP, $Response, $Data, $aArray, $Final
    
        $Url = "https://" & $TargetIP & '/search?q=' & $Target & '&format=xml'
        $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    
        $oHTTP.Open($RequestType, $Url, False)
        $oHTTP.Option(4) = 13056        ; THIS IS MANDATORY! Ignores any SSL Errors
        $oHTTP.Send()
        $Response = $oHTTP.Status
    
        $Data = $oHTTP.ResponseText
        $aArray = StringRegExp($Data,'"([^"]*)":"([^"]*)"', 3)
        if IsArray($aArray) then
            $Final = _Array_Resize($aArray, 2)
        Else
            $Final = $Data
        EndIf
    
        Return $Final
    EndFunc
    
    Func _Array_Resize(ByRef $aArray1d, $iColumns, $iStart = Default)
      If IsKeyword($iStart) Then $iStart = 0
      Local $iElements = UBound($aArray1d) - $iStart
      If Mod($iElements, $iColumns) <> 0 Then Return SetError(1, 0, False)
      Local $aArray2d[$iElements / $iColumns][$iColumns]
      For $i = 0 To $iElements - 1
        $aArray2d[Floor($i / $iColumns)][Mod($i, $iColumns)] = $aArray1d[$i + $iStart]
      Next
      _ArrayInsert($aArray2d, 0, UBound($aArray2d))
      Return $aArray2d
    EndFunc   ;==>_Array_Resize
    Alles anzeigen
  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • Moombas
    • 29. November 2022 um 08:23

    Ich glaube es geht hier nichtmal um eine Gültigkeitsprüfung, sondern eher wirklich zu schauen ob beide erwarteten Mail-Adressen im "To" vorkommen, wo ich wieder dabei bin das aus meiner Sicht eine RegEx-Abfrage hierbei unsinnig ist und ein einfaches Stringin Str() hier die bessere Wahl wäre.

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • Moombas
    • 28. November 2022 um 15:49

    Auch würde (\S*?}@musterhausen\.de);(\S*?@musterhausen\.de) gehen aber warum unbedingt regex?

    Du schaust fix nach 2 Werten, da würde doch auch einfach ein StringInStr() für beides gehen.

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • Moombas
    • 28. November 2022 um 15:41

    Ich gehe davon aus, die Domain ist immer gleich?

    Der Name davor aber immer unterschiedlich, auch in der Länge nie gleich?

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • Moombas
    • 28. November 2022 um 15:27

    Wie wäre es mit mailtest\d@\S{11}.de

    Wobei 11 der Länge von 'irgendwas' entspricht

  • auslesen und ausgeben einer txt

    • Moombas
    • 28. November 2022 um 09:57

    Tut mir Leid @AUTOIT321 aber du solltest dringend mal die Hilfe anschauen :rtfm:

    Du erzeugst ein Label, weißt ihm aber keinen Wert zu...

    Außerdem ließt du mit FileReadLine() weiterhin nur die erste Zeile aus, sofern du im 2. Parameter nicht die Zeilen durch gehst.

    Ich habe dich darauf bereits in Post #2 hingewiesen und für alles andere hast du hier auch bereits (andere) Lösungsansätze erhalten.

    Das Ganze funktioniert jedoch nicht, wenn du nicht das kleine 1*1 beherrschst bzw. dir nciht die Hilfe anschaust.

  • auslesen und ausgeben einer txt

    • Moombas
    • 28. November 2022 um 09:16

    Wenn es wirklich nur um das Ersetzen geht gebe ich Aspirinjunkie recht ;)

    Wenn es aber darum geht ggf. mit den Daten weiter zu arbeiten, wäre ich eher beim Array ;)

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™