Relative Pfadangaben kennen Sie wahrscheinlich, vor allem, wenn Sie sich mit der Erstellung von Websites beschäftigten. Jeweils ein Punkte-Paar in einem Pfad gibt dabei an, dass der nachfolgend angegebene Pfad (etwa einer Datei) ausgehend von einem darüber liegenden Pfad im jeweils darüber liegenden Ordner zu suchen ist. Die relative Angabe des Ordners "Gemeinsame Dateien" im Programme-Ordner ausgehend vom System-Ordner würde beispielsweise so aussehen:
..\..\Programme\Gemeinsame Dateien
wobei der Ausgangs-Pfad je nach Windows-Version beispielsweise
C:\Windows\System
oder
C:\WINNT\System32
usw. lauten könnte.
Eine solche relative Pfadangabe aufzulösen und den tatsächlichen gewünschten Pfad zu ermitteln, "riecht" offensichtlich "nach Arbeit". Vergessen Sie es und sparen Sie sich die Mühe.
Sie können schlicht und einfach den Ausgangspfad und den relativen Pfad zusammenfügen - und Windows erledigt den Rest automatisch:
C:\Windows\System\..\..\Programme\Gemeinsame Dateien
oder
C:\WINNT\System32\..\..\Programme\Gemeinsame Dateien
sind durchaus gültige und tatsächlich funktionierende Pfadangaben.
Auch der Zugriff auf Dateien funktioniert einwandfrei:
Dim nFNr As Integer
Dim nText As String
nFNr = FreeFile
Open "C:\Windows\System\..\..\autoexec.bat" For Binary As #nFNr
oder alternativ
Open "C:\WINNT\System32\..\..\boot.ini" For Binary As #nFNr
nText = Space$(LOF(nFNr))
Get #nFNr, , nText
Close #nFNr
Debug.Print nText
Zum korrekten Zusammensetzen von Ausgangspfad und relativer Pfadangaben bieten sich Hilfsfunktionen wie "BuildPath" an, die automatisch für den zwischen den Bestandteilen notwendigen Backslash sorgen:
Public Function BuildPath(PathRoot As String, PathPart As String) As String
Select Case Right$(PathRoot, 1)
Case "\"
Select Case Left$(PathPart, 1)
Case "\"
BuildPath = PathRoot & Mid$(PathPart, 2)
Case Else
BuildPath = PathRoot & PathPart
End Select
Case Else
Select Case Left$(PathPart, 1)
Case "\"
BuildPath = PathRoot & PathPart
Case Else
BuildPath = PathRoot & "\" & PathPart
End Select
End Select
End Function
Auch die Datei-Dialoge des Common Dialog Controls verkraften klaglos solche Pfadangaben, wie ebenfalls die "uralten" Steuerelemente wie DirListBox und FileListBox. Dass Sie sogar in der Eingabezeile ("Adresse") des Windows-Explorers Pfade auf diese Weise angeben können, deutet darauf hin, dass diese automatische Auflösung tatsächlich bereits in jeder Windows-Version drinsteckt.
Eine Garantie, dass derartige Pfadangaben immer verwendet werden können, gibt es allerdings nicht. Es ist durchaus vorstellbar, dass externe Steuerelemente von anderen Anbietern und andere Anwendungen darüber stolpern können. Um eigene Tests werden Sie in diesen Fällen nicht herum kommen.
|