- Offizieller Beitrag
Diese Funktion dient dazu einen Dateipfad zu kürzen, um diesen in einem Label (begrenzter Platz) anzeigen zu können.
Der Pfad wird dabei aber nicht einfach vorne oder hinten abgeschnitten, sondern es bleibt das Device erhalten und der Rest wird dann vom rechten Teil aufgefüllt.
Skript und Beispiel:
Spoiler anzeigen
$hGui = GUICreate('Test', 400, 200)
GUISetFont(12, 400, 0, 'Courier New')
$hPath1 = GUICtrlCreateLabel('', 10, 10, 380, 20)
GUICtrlSetBkColor(-1, 0xCCCCCC)
$hPath2 = GUICtrlCreateLabel('', 10, 60, 380, 20)
GUICtrlSetBkColor(-1, 0xCCCCCC)
GUISetState()
; Beispiel 1
$sPath1 = 'c:\Users\Oscar\Pictures\Urlaub2011\Pic1045.jpg'
$sPath1 = _FilePathTrimToLimit($sPath1, 38)
GUICtrlSetData($hPath1, $sPath1)
; Beispiel 2
$sPath2 = '\\Server\d\Backup\Users\Oscar\Pictures\Urlaub2011\Pic1045.jpg'
$sPath2 = _FilePathTrimToLimit($sPath2, 38)
GUICtrlSetData($hPath2, $sPath2)
Do
Until GUIGetMsg() = -3
;===============================================================================
; Function Name: _FilePathTrimToLimit($sFilepath, $iLimit)
; Description:: Begrenzt einen Dateipfad auf eine anzugebene Stringlänge.
; Dabei wird er aber nicht vorn oder hinten abgeschnitten,
; sondern es bleibt das Device erhalten und der rechte Teil
; des Pfades.
; Parameter(s): $sFilepath = der Pfad, der gekürzt werden soll
; $iLimit = auf wie viele Stellen der Pfad gekürzt werden soll
; Requirement(s): ---
; Return Value(s): Der gekürzte Pfad
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _FilePathTrimToLimit($sFilepath, $iLimit)
Local $sDevice, $iLen = StringLen($sFilepath)
If $iLimit < 1 Or $iLimit >= $iLen Then Return $sFilepath
$sDevice = StringRegExpReplace($sFilepath, '([a-z]:\\|\\\\.+?\\[a-z]\\).+', '$1') & '...'
Return $sDevice & StringRight($sFilepath, $iLimit - StringLen($sDevice))
EndFunc ;==>_FilePathTrimToLimit
Edit: Eine bessere Lösung für das Problem gibt es hier: _GuiCtrlSetPath