Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Pfadangabe mit "..\" richtig verarbeiten - Suc

  Alt 16. Aug 2005, 00:11
Also das verhält sich so: Mit Delphi-Referenz durchsuchenMinimizeFilename 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 MSDN-Library durchsuchenDrawText 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 MSDN-Library durchsuchenGetShortPathname. welches aus einem langen Dateinamen den entsprechenden DOS dateinamen generiert und MSDN-Library durchsuchenGtFullPathName, 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat