ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 30.08.2001

Diese Seite wurde zuletzt aktualisiert am 30.08.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Pfade komponieren

Zurück...


Anzeige

(-hg) mailto:hg_buildpath@aboutvb.de

Wenn Sie zwei Pfadbestandteile zu einem Pfad zusammenfügen möchten, darf sich im Endeffekt zwischen den beiden Teilen nur genau ein Trennzeichen ("\") befinden - es muss sich aber auch genau ein solches dort befinden. Das Trennzeichen kann vom Ende des linken Teils oder vom Anfang des rechten Teils stammen, es kann aber auch bei beiden Teilen oder gar nicht vorhanden sein.

Die folgende Funktion BuildPath fügt zwei Pfadbestandteile zusammen und sorgt für das Vorhandensein von und nur genau einem "\" an der Zusammenfügestelle der beiden Teile. Den zusammengefügten Pfad erhalten Sie als Rückgabewert der Funktion.

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

Da das Auflösen einer relativen Pfadangabe, die mit der Zeichenfolge "..\" einmalig oder mehrmals aufeinander folgend beginnt, im Prinzip auch nichts anderes ist, als das Zusammenfügen von zwei Pfadbestandteilen, bietet es sich an, die oben stehende Funktion dahingehend zu erweitern. In der folgenden Funktion BuildPathEx wird der linke Teil (PathRoot) so oft um eine Ebene reduziert, wie die Zeichenfolge "..\" dem rechten Teil (PathPart) vorangestellt ist, wenn der optionale Parameter ResolveRelativePaths auf True gesetzt ist (Voreinstellung). Ist eine der "..\"-Folge entsprechende Verkürzung des Pfades nicht möglich, weil die Wurzel überschritten würde (es werden sowohl Laufwerksbezeichner wie "c:\" als auch UNC-Rechnernamen wie "\\PC" berücksichtigt), wird der Laufzeitfehler 5 ausgelöst.

Public Function BuildPathEx(ByVal PathRoot As String, _
 ByVal PathPart As String, _
 Optional ByVal ResolveRelativePaths As Boolean = True) As String

  Dim nPos As Integer
  
  If ResolveRelativePaths Then
    If Right$(PathRoot, 1) = "\" Then
      PathRoot = Left$(PathRoot, Len(PathRoot) - 1)
    End If
    Do
      If Left$(PathPart, 3) = "..\" Then
        nPos = InStrRev(PathRoot, "\")
        Select Case nPos
          Case 2, 0
            Err.Raise 5
          Case Else
            PathRoot = Left$(PathRoot, nPos - 1)
            PathPart = Mid$(PathPart, 4)
        End Select
      Else
        Exit Do
      End If
    Loop
  End If
  BuildPathEx = BuildPath(PathRoot, PathPart)
End Function

Da im Rahmen von Web-Strukturen und zusammenwachsenden Rechnerwelten der Umgang mit dem in Unix-/Linux-Welten gebräuchlichen Pfadtrenner "/" notwendig ist, folgen hier nun noch die beiden entsprechenden Varianten der obigen Funktionen:

Public Function BuildPathU(PathRoot As String, PathPart As String) _
 As String

  Select Case Right$(PathRoot, 1)
    Case "/"
      Select Case Left$(PathPart, 1)
        Case "/"
          BuildPathU = PathRoot & Mid$(PathPart, 2)
        Case Else
          BuildPathU = PathRoot & PathPart
      End Select
    Case Else
      Select Case Left$(PathPart, 1)
        Case "/"
          BuildPathU = PathRoot & PathPart
        Case Else
          BuildPathU = PathRoot & "/" & PathPart
      End Select
  End Select
End Function

Public Function BuildPathExU(ByVal PathRoot As String, _
 ByVal PathPart As String, _
 Optional ByVal ResolveRelativePaths As Boolean = True) As String

  Dim nPos As Integer
  
  If ResolveRelativePaths Then
    If Right$(PathRoot, 1) = "/" Then
      PathRoot = Left$(PathRoot, Len(PathRoot) - 1)
    End If
    Do
      If Left$(PathPart, 3) = "../" Then
        nPos = InStrRev(PathRoot, "/")
        Select Case nPos
          Case 0
            Err.Raise 5
          Case Else
            If Mid$(PathRoot, nPos - 1, 1) = "/" Then
              Err.Raise 5
            Else
              PathRoot = Left$(PathRoot, nPos - 1)
              PathPart = Mid$(PathPart, 4)
            End If
        End Select
      Else
        Exit Do
      End If
    Loop
  End If
  BuildPathExU = BuildPathU(PathRoot, PathPart)
End Function

Modul modBuildPath (modBuildPath.bas - ca. 3,2 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer