Pfadangabe mit "..\" richtig verarbeiten - Suche F
Hallo und guten Abend,
ich bräuchte eine Funktion die sowas wie den Pfad "C:\test\..\test1.dat" in "C:\test\test.dat" umwandelt, d.h. den gegebenen Pfad so verarbeitet das ich dann mit Delphi daraus eine Datei öfnnen kann (den ersten Beispielpfad kapiert Delphi ja leider nicht). Angeblich gibt`s dafür irgendeine WinApi-Funktion, ich habe aber k.a. wie die heisst. Ich würde mich über eine Antwort sehr freuen da mir dazu echt nichts mehr einfällt. Vielen Dank im Vorraus ! Liebe Grüße, Thomas |
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Versuch mal ExpandFileName():
showmessage (ExpandFileName('C:\testdir1\..\testdir2\test.dat' )) >>> C:\testdir2\test.dat Das sollte deinen Zweck erfüllen ;) |
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
He, dich kennt man doch *g* ;-)
Ne, also ich dachte eigentlich die ExpandFileName-Funktion wäre dazu da um aus kurzen Dateipfaden lange zu machen, ich wusste aber nicht das die auch solche Pfadangaben mit den Punkterln (verrat mir einen Fachbegriff dafür) verarbeiten kann, hätte da eigentlich mehr an das berühmte "~" gedacht. Naja, sei`s drum, was geht das geht, danke... Vielen Dank und gutes Nächtle ! |
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Also ich wüßte nicht, daß es dafür eine API-Funktion gibt.
Suchst du das für kurze 8.3-Dateinamen? Dann ist's GetShortPathName |
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Also das verhält sich so: Mit MinimizeFilename kann man einen Pfad kürzen, damit er in einen bestimmten Bereich passt.
Zitat:
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:
ExpandFilename versucht dies zwar, funktioniert aber nur seh bedingt:
Delphi-Quellcode:
Daraus wird zum Beispiel: 'e:\Project1.exe'.
procedure TForm1.Button1Click(Sender: TObject);
const Path = 'e:\Delphi\..\Project1.exe'; begin ShowMessage(ExpandFileName(Path)); end; 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:
|
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Ich denke, daß er vielmehr den effektiven Pfad sucht. Der effektive Pfad von C:\.\Otto\..\boot.ini ist nämlich C:\boot.ini - ich hoffe du verstehst was ich meine. Allerdings wüßte ich dafür keine Funktion.
|
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Zitat:
2. Post, da hat es sich schon geklärt ;) Zitat:
|
Re: Pfadangabe mit "..\" richtig verarbeiten - Suc
Danke, ExpandFileName hat geholfen -> erledigt !
Vielen Dank nochmal ! Mit freundlichen Grüßen, Thomas Tschofenig |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz