Home > Visual Basic Classic > Dateisystem > Lange Dateinamen in kurze Dateinamen umwandeln

Lange Dateinamen in kurze Dateinamen umwandeln

Veröffentlicht am 24.07.2008 von Sebastian Krogolewski

Artikelinformationen

Sprache:
Visual Basic 6
Datenbank:
keine

Artikel speichern

del.icioMister WongGoogleLinkarenaYiggSpurlFurl

Artikel bewerten

Bewertng:5.00 / 5 (3 mal bewertet)

In der Windows Welt kennt man mittlerweile alle Dateinamen in der Langform C:\Dokumente und Einstellungen\Testbenutzer\Eigene Dateien\Textdatei.txt. Dies kann eventuell mit älteren Anwendungen, die noch mit der Kurzform C:\DOKUME~1\TESTBE~1\EIGENE~1\TEXTDA~1.TXT arbeiten, zu Problemen führen. Diese Probleme kann man geschickt umgehen, indem man mit der Win API Funktion GetShortPathNameA bzw. GetShortPathNameW aus der Kernel32.Dll den Dateinamen in diese Kurzfom umwandelt.

 

MAX_PATH Konstante definieren:

1
Private Const MAX_PATH As Long = 260

 

Einbinden der Win API Funktion GetShortPathNameA als GetShortPathName aus der Kernel32.Dll.

1
2
3
Private Declare Function GetShortPathName Lib "kernel32" Alias _
    "GetShortPathNameA" (ByVal lpszLongPath As String, _
    ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

 

Funktion mit Aufruf von GetShortPathName und als Funktionsergebnis wird der kurze Dateiname zurückgeliefert.

VB Funktion
1
2
3
4
56
7
8
9
1011
12
13
14
Public Function GetShortName(ByVal longName As String) As String
Dim strShort As String
Dim strLen As Long
 
strShort = String$(MAX_PATH, 0)strLen = GetShortPathName(LongName, strShort, Len(strShort))
If (strLen > 0) Then
    strShort = String$(strLen, 0)
    strLen = GetLongPathName(LongName, strShort, Len(strShort))
    If (strLen = Len(strShort) - 1) Then        GetShortName = Left$(strShort, strLen)
    End If
End If
End Function

 

Beispiel Aufruf
1
GetShortName("C:\Dokumente und Einstellungen\Testbenutzer\Eigene Dateien\Textdatei.txt")

Downloads

Suchbegriffe

VB6, Visual Basic, GetShortPathName, GetShortPathNameA, GetShortPathNameW

Suche