Tipp 8.14 - Dateipfad individuell kürzen
Wie kann man einen langen Dateipfad auf eine bestimmte Maximalanzahl Zeichen verkürzen?
Hintergrund: es gibt viele Routinen, die einen Pfad auf eine bestimmte Länge in Pixel auf Basis einer Textbox oder eines Labels kürzen.
Diese Routine funktioniert unabhängig von irgendwelchen Controls - es muss lediglich die gewünschte Maximalanzahl Zeichen übergeben werden. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: PathCompactPathExA, lstrlenW
Beispiel:
Option Explicit Private Const MAX_PATH As Long = 260 Private Declare Function PathCompactPathEx Lib "shlwapi.dll" Alias _ "PathCompactPathExA" _ (ByVal pszOut As String, _ ByVal pszSrc As String, _ ByVal cchMax As Long, _ ByVal dwFlags As Long) As Long Private Declare Function lstrlenW Lib "kernel32" _ (ByVal lpString As Long) As Long Public Function CompactPath(ByVal sPath As String, _ ByVal lMaxLen As Long) As String '// ===================================================== '// Methode | "Schneidet" einen Pfad auf die gewünschte '// | Länge (= Anzahl Zeichen) '// ----------------------------------------------------- '// Parameter | sPath - der gesamte Pfad '// | lMaxLen - Maximallänge des Pfades '// ----------------------------------------------------- '// Rückgabe | gekürzte Pfad '// ----------------------------------------------------- '// Erstellt | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispiel |?CompactPath("C:\Dokumente und Einstellungen\All Users '// \Startmenü\Programme\Zubehör\Editor.lnk", 20) '// = C:\Dok...\Editor.lnk '// ===================================================== Dim lResult As Long Dim sBuffer As String lMaxLen = lMaxLen + 1 sBuffer = Space$(MAX_PATH) lResult = PathCompactPathEx(sBuffer, sPath, lMaxLen, 0&) CompactPath = Left$(sBuffer, lstrlenW(StrPtr(sBuffer))) End Function
Voraussetzungen: Windows 2000 oder höher (oder Windows NT 4.0 mit Internet Explorer 4.0 oder höher).Windows 98/ME (oder Windows 95 mit Internet Explorer 4.0 oder höher).