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.374 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
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. |