- Offizieller Beitrag
Auf mehrfachen Wunsch eines einzelnen Herren ( ) habe ich eine Funktion zum Überprüfen von Strings auf Pfadkonformität erstellt.
Falls es wer braucht:
Spoiler anzeigen
;****************************************************************************************************************
; 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]
;****************************************************************************************************************
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
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.
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.