Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB6 | 24.02.03 |
Langen Dateinamen ermitteln II Eine Funktion, die den vollständigen langen Pfad- und Dateiname aus einer Pfadangabe mit kurzer Schreibweise ermittelt. | ||
Autor: Dieter Otter | Bewertung: | Views: 12.421 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Hin und wieder kann es vorkommen, dass man eine Pfadangabe mit kurzer 8.3 Schreibweise in die entsprechend lange Schreibweise umwandeln möchte. Zum Beispiel übergibt der Windows-Explorer beim Doppelklick auf ein mit Ihrer Anwendung verknüpftes Dokument den Pfad in der kurzen Schreibweise an Ihr Programm.
Nachfolgende Funktion splittet den Gesamtpfad in seine einzelnen Ordner auf, wandelt die kurzen Namen in die entsprechend langen Namen um und setzt diese wieder als Gesamtpfad zusammen. So wird beispielweise aus der kurzen Schreibweise:
c:\eigene~1\dokume~1\beitra~1.doc
die lange Schreibweise:
c:\Eigene Dateien\Dokumente\Beitragserhöhung.doc
' Langen Dateinamen ermitteln Public Function GetLongName(ByVal sShortName As String) As String Dim sOrdner() As String Dim sLongName As String Dim i As Integer Dim sTemp As String Dim iCount As Integer ' Falls Fehler auftritt, wird der kurze ' Dateiname zurückgegeben GetLongName = sShortName ' Gesamtpfad in die einzelnen Ordner zerlegen sOrdner = Split(sShortName, "\") iCount = UBound(sOrdner) ' Fehlerbehandlung aktivieren On Error Resume Next ' Alle Ordner von hinten nach vorne durchlaufen For i = iCount To 1 Step -1 Err = 0 If i = iCount Then ' langen Dateinamen ermitteln sTemp = Dir$(sShortName) If Err <> 0 Then Exit For sLongName = sTemp + sLongName Else ' langen Ordnernamen ermitteln sTemp = Dir$(sShortName, vbDirectory + vbHidden) If Err <> 0 Then Exit For sLongName = sTemp & "\" & sLongName End If sShortName = Left$(sShortName, _ Len(sShortName) - Len(sOrdner(i)) - 1) Next i If Err = 0 Then GetLongName = sOrdner(0) & "\" & sLongName End Function