Ein oft vorkommendes Szenario. Der Anwender eines Programms wird dazu aufgefordert, einen Pfad einzugeben - um z.B. dort eine Datenbank zu erstellen, oder einfach nur irgendwelche Einstellungen und/oder Dateien darin zu speichern. Nun gibt der Anwender also einen Pfad ein und klickt auf OK. Jetzt sollte die Eingabe aber sicherheitshalber von Ihrer Anwendung geprüft werden, d.h. es sollte eine Prüfung erfolgen, ob es sich um eine gültige Pfadangabe handelt. Hierzu lassen sich bestimmte Prüfkriterien verwenden, so z.B.:
Die nachfolgende Funktion erledigt dies für Sie. Sie übergeben der Funktion einfach den zu prüfenden Pfad und bekommen entweder True (Pfad OK) oder False (Pfad ungültig) zurück. ' Prüft einen String, ob dieser evtl. eine ' Pfadstruktur darstellt Public Function IsValidPath(ByVal strPath As String) _ As Boolean Dim bResult As Boolean Dim intAscii As Integer Dim i As Long ' nicht erlaubte Zeichen Dim InvalidChars As String InvalidChars = ":*?<>|" & Chr$(34) ' Default-Rückgabewert der Funktion IsValidPath = False ' alle normalen Slash's in Backslash's umwandeln strPath = Replace(strPath, "/", "\") ' \.\ mit Leerstring ersetzen strPath = Replace(strPath, "\.\", "") ' Prüfung nach den wichtigsten Eigenschaften ' Ein gültiger Pfad beginnt entweder: ' 1) mit einem Doppel-Backslash (UNC-Pfad) ' 2) einem Buchstaben, gefolgt von einem Doppelpunkt ' 3) einem normalen Backslash bResult = True If Left$(strPath, 2) <> "\\" Then If Mid$(strPath, 2, 1) = ":" Then ' Wenn zweites Zeichen ein Doppelpunkt ist, ' muss das erste Zeichen ein Buchstabe A-Z sein intAscii = Asc(Left$(UCase$(strPath), 1)) If intAscii < 64 Or intAscii > 90 Then bResult = False Else ' wenn Buchstabe + Doppelpunkt, dann muss als ' drittes Zeichen ein Backslash folgen bResult = (Mid$(strPath, 3, 1) = "\") End If ElseIf Left$(strPath, 1) <> "\" Then bResult = False End If End If If Not bResult Then Exit Function ' auf "verbotene" Zeichen prüfen For i = 1 To Len(InvalidChars) If InStr(4, strPath, Mid$(InvalidChars, i, 1), 0) <> 0 Then bResult = False End If Next i If Not bResult Then Exit Function ' Was auch nicht vorkommen darf, sind folgende ' Kombinationen bResult = (InStr(3, strPath, "\\") = 0 And _ InStr(3, strPath, "/\") = 0 And _ InStr(3, strPath, "\/") = 0) If Not bResult Then Exit Function ' wird ein Punkt nach einem Backslash gefunden, ' so muss dem .\ folgen (also ..\), ansonsten ' ist der Pfad ebenfalls ungültig, da ein Ordner ' niemals mit einem Punkt beginnen darf i = 0 Do i = InStr(i + 1, strPath, "\.") If i > 0 Then If Mid$(strPath, i + 2, 2) <> ".\" Then bResult = False End If End If Loop Until i = 0 Or bResult = False If bResult = False Then Exit Function IsValidPath = True End Function Die Funktion lässt sich sicherlich noch um das ein oder andere Prüfkriterium erweitern. Sollte Ihnen hierzu noch etwas einfallen, lassen Sie es uns wissen Die in der Funktion verwendete Replace-Funktion ist erst ab VB6 vorhanden. Für VB4/5 empfehlen wir folgende "Ersatz-Funktion" zu verwenden: Blitzschnelle Replace-Funktion (auch für VB6) Dieser Tipp wurde bereits 28.325 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |