• Offizieller Beitrag

    Auf mehrfachen Wunsch eines einzelnen Herren ( :D ) habe ich eine Funktion zum Überprüfen von Strings auf Pfadkonformität erstellt.
    Falls es wer braucht:

    Spoiler anzeigen
    [autoit]

    ;****************************************************************************************************************
    ; Funktion _PathCheck($PATHSTRING [,$TYPE [,$SZ]])
    ;
    ; Parameter $PATHSTRING: zu überprüfender String
    ; $TYPE: -1 (default) prüft auf Pfad inkl. Laufwerk, abschließender Backslash optional
    ; 0 prüft Pfad o. Lw., abschließender Backslash erforderlich ("\adga\adf\")
    ; 1 prüft Pfad o. Lw., abschließender Backslash optional ("\adga\adf")
    ; $SZ: -1 (default) prüft keine Sonderzeichen ( ! oder ? oder Umlaute etc. )
    ; "zeichen1zeichen2zeiche3" zu prüfende Sonderzeichen, ohne Trenner oder Leerzeichen
    ;
    ; Return 1 = Übereinstimmung mit Suchmuster
    ; 0 = keine Übereinstimmung mit Suchmuster
    ;
    ; Autor [email='bugfix@autoit.de'][/email]
    ;****************************************************************************************************************

    [/autoit] [autoit][/autoit] [autoit]

    Func _PathCheck($PATHSTRING, $TYPE=-1, $SZ=-1)
    Local $SONDERZEI = ""
    If $SZ <> -1 Then
    $SONDERZEI = $SZ
    EndIf
    Local $PATT_FULL = "((?<!.)([a-zA-Z]\:\\)(?!\s)(([\w-+." & $SONDERZEI & "]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(\\?)(?!.))"
    Local $PATT_O_LW_M_BS = "((?<!.)(\\)(?!\s)(([\w-+." & $SONDERZEI & "]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(?<!\\)(\\)(?!.))"
    Local $PATT_O_LW_O_BS = "((?<!.)(\\)(?!\s)(([\w-+." & $SONDERZEI & "]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(?<!\\)(\\?)(?!.))"
    Local $RET
    Switch $TYPE
    Case -1 ; prüft auf "C:\abd\vllb" bzw. "C:\abd\vllb\"
    $RET = StringRegExp($PATHSTRING, $PATT_FULL)
    Case 0 ; prüft auf "\agv\ad\"
    $RET = StringRegExp($PATHSTRING, $PATT_O_LW_M_BS)
    Case 1 ; prüft auf "\agv\ad"
    $RET = StringRegExp($PATHSTRING, $PATT_O_LW_O_BS)
    EndSwitch
    Return $RET
    EndFunc ;==>PathCheck

    [/autoit]

    EDIT:

    Ich habe hier mal versucht den verwendeten regulären Ausdruck zu erläutern.
    Wenn man noch nichts damit zu tun hatte und dann auf so ein Gebilde schaut, ist das wie der vielzitierte Blick vom Schwein ins Uhrwerk. :D
    Ging mir genauso.

    EDIT2:
    Hab noch eine Erweiterung zur optionalen Einbindung von Sonderzeichen ( Umlaute, !, ? etc. ) hinzugefügt.
    Manch einer hat so etwas ja in seinen Pfaden. :)
    Einfach als Parameter mit übergeben.

    Hab die Erklärung nochmal überarbeitet, etwas übersichtlicher gestaltet.

  • Hallo zusamen!
    Wie gsagt das funtzt! *glücklich bin* :klatschen:
    Deine Erklärung ist super für die die keine Ahnung von StringRegExp haben (mich mit einbezogen^^)

    Das mit den Klammern habe ich jetzt auch so einigermaßen verstanden :stolz_bin:(binmal gespannt ob ichs bei nächsten mal selbst hinbekomme :lol:)
    Weiter so! und THX nochmal!