AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Pfadangabe mit "..\" richtig verarbeiten - Suche Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

Pfadangabe mit "..\" richtig verarbeiten - Suche Funktion

Ein Thema von Thomas233 · begonnen am 15. Aug 2005 · letzter Beitrag vom 30. Aug 2005
Antwort Antwort
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#1

Pfadangabe mit "..\" richtig verarbeiten - Suche F

  Alt 15. Aug 2005, 23:00
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

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

  Alt 15. Aug 2005, 23:32
Versuch mal ExpandFileName():

showmessage (ExpandFileName('C:\testdir1\..\testdir2\test.dat' )) >>> C:\testdir2\test.dat

Das sollte deinen Zweck erfüllen
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#3

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

  Alt 15. Aug 2005, 23:48
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 !
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

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

  Alt 15. Aug 2005, 23:59
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 MSDN-Library durchsuchenGetShortPathName
  Mit Zitat antworten Zitat
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
Olli
(Gast)

n/a Beiträge
 
#6

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

  Alt 16. Aug 2005, 00:14
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.
  Mit Zitat antworten Zitat
CLRS530

Registriert seit: 27. Jun 2005
Ort: Hamburg
39 Beiträge
 
Delphi 7 Enterprise
 
#7

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

  Alt 16. Aug 2005, 11:05
Zitat von Olli:
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.

2. Post, da hat es sich schon geklärt

Zitat von jfheins:
Versuch mal ExpandFileName():

showmessage (ExpandFileName('C:\testdir1\..\testdir2\test.dat' )) >>> C:\testdir2\test.dat

Das sollte deinen Zweck erfüllen
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#8

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

  Alt 30. Aug 2005, 23:10
Danke, ExpandFileName hat geholfen -> erledigt !

Vielen Dank nochmal !

Mit freundlichen Grüßen,
Thomas Tschofenig
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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