Pfadnamen für Ausgabe kürzen
Im Microsoft .NET Framework ist schon lange eine Funktion zum Kürzen von Dateinamen enthalten. Aus c:\Windows\System32\MyDll.dll kann dann zum Beispiel c:\Windows\…\MyDll.dll werden. Hierzu greift man auf TextRenderer.MeasureText zurück. Allerding hat diese Funktion einen kleinen Fehler bei dem zurückgegebenen Wert, der hier beschrieben ist:
Der Workaround ist zum Glück auch gleich angegeben, und kann dann so aussehen:
string filename = string.Copy(filenameForOutput); if (!string.IsNullOrEmpty(filename)) { TextRenderer.MeasureText(filename, Font, Size, TextFormatFlags.PathEllipsis | TextFormatFlags.ModifyString); filename = filename.Substring(0, filename.IndexOf('\0')); } |
Der Source zeigt auch gleich noch eine kleine andere Ergänzung: Die Funktion modifiziert den übergebenen String. Man sollte diesen also vorher kopieren, sofern man nicht schon mit einer Kopie des Strings arbeitet.