Also das verhält sich so: Mit
MinimizeFilename kann man einen Pfad kürzen, damit er in einen bestimmten Bereich passt.
Zitat:
Shortens a fully qualified path name so that it can be drawn with a specified length limit.
Dies ist aber nur zur Darstellung geeignet, das der vollständige Pfad niergens abgelegt wird. Wieder zurück geht es also nicht. Man müsste ihn sich also selber irgendwo merken.
Will amn diese
VCL Funktiopn nicht nutzen, kann man den Pfad auch noch mit
DrawText und dem Flag DT_PATH_ELLIPSIS von Hand ausgeben. Oder man benutzet ein Static Control und gibt ihm den Stil SS_PATHELLIPSIS, dieser Stil ist aber nur ab Windows NT und höher verfügbar:
Zitat:
Windows NT or later: Replaces characters in the middle of the string with ellipses so that the result fits in the specified rectangle. If the string contains backslash (\) characters, SS_PATHELLIPSIS preserves as much as possible of the text after the last backslash.
Kurz: Die Umkehrung ist nicht möglich.
ExpandFilename versucht dies zwar, funktioniert aber nur seh bedingt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
Path = 'e:\Delphi\..\Project1.exe';
begin
ShowMessage(ExpandFileName(Path));
end;
Daraus wird zum Beispiel: 'e:\Project1.exe'.
Dann gibt es noch
GetShortPathname. welches aus einem langen Dateinamen den entsprechenden DOS dateinamen generiert und
GtFullPathName, welches aus den DOS Dateinamen wieder den langen Dateinamen generiertr. Dies funktioniert aber nur, wenn man die Kurzendateienmanen unter NTFS nicht deaktiviert hat aus Performancegründen und der Pfad nicht länger als 67 Bytes ist:
Zitat:
When an application calls this function and specifies a path on a volume that does not support 8.3 aliases, the function fails with ERROR_INVALID_PARAMETER if the path is longer than 67 bytes.