AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Was macht ExpandFileName?

Ein Thema von Glados · begonnen am 1. Nov 2017 · letzter Beitrag vom 1. Nov 2017
Antwort Antwort
Glados
(Gast)

n/a Beiträge
 
#1

Was macht ExpandFileName?

  Alt 1. Nov 2017, 18:50
Delphi-Version: 5
Ich stehe gerade etwas auf dem Schlauch, als ich ExpandFileName() an einer Stelle im Code gefunden habe.
Die Funktion wird an einer Stelle aufgerufen, wo ich zu 100% immer nur absolute Pfade übergebe.

Was genau bewirkt ExpandFileName dann dort? Und kann es raus?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.586 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 18:57
Die Funktion wird an einer Stelle aufgerufen, wo ich zu 100% immer nur absolute Pfade übergebe.
Aus der Hilfe:
Zitat:
ExpandFileName converts the relative file name into a fully qualified path name. ExpandFileName does not verify that the resulting fully qualified path name refers to an existing file, or even that the resulting path exists.
Also, wenn Du weißt, dass Du an dieser Stelle nur absolute Pfade hast, dann kannst Du Dir den Aufruf sparen, aber evtl. gab es doch einmal einen guten Grund für die Funktion an der Stelle...? Schaden sollte der Aufruf nicht, außer es geht um Massenverarbeitung und Geschwindigkeit.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#3

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 18:59
Wenn ich aber einen relativen Pfad habe, woher kommt dann der absolute? Wird dann in der NTFS-Tabelle nachgeguckt?

Ich weiß gerade nicht mal, was ein relativer Pfad unter Windows sein soll. Eventuell \Test\Path\File.exe statt D:\Test\Path\File.exe ?
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
118 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 19:11
Ein relativer Pfad (beginnt mit .\ oder ..\) ist relativ zum Working Directory oder aktuellen Verzeichnis.
Wenn Du nichts tust, ist das das aktuelle Verzeichnis das, in dem die EXE-Datei liegt beim Start.

Was ExpandFileName macht, sagt doch die Hilfe ganz klar:

Zitat:
ExpandFileName konvertiert einen relativen Dateinamen in einen vollständigen Pfadnamen, indem dem Dateinamen das aktuelle Verzeichnis und das aktuelle Laufwerk hinzugefügt werden.
Björn Reimer
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
889 Beiträge
 
#5

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 19:11
Es gibt ja SetCurrentDir bzw. GetCurrentDir.
Damit kannst du das aktuelle Verzeichnis festlegen bzw. auslesen.

z.B: könnte der CuurenDir ja = C:\Users\User sein

Dann währe ein Pfad "Desktop\MeinOrdner\" ein relativer Pfad, weil er der Inhalt relativ zum CurrentDir ist.

Der dazugehörige absolute Pfad wäre "C:\Users\User\Desktop\MeinOrdner".
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.633 Beiträge
 
Delphi 5 Professional
 
#6

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 19:13
Ein relativer Pfad ist z.B. system32\shell32.dll oder auch Windows\system32\kernel32.dll. ExpandFileName macht daraus einen absoluten Pfad, IIRC basierend auf dem aktuellen Arbeitsverzeichnis. ExpandFileName prüft NICHT, ob der zusammengebaute zurückgegebene absolute Pfad auf eine existierende Datei verweist - wie schon im von sakura geposteten Hilfeauszug zu lesen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 19:13
Solche Pfade verwende ich nicht. Dann kann ich ExpandFileName ja rausschmeißen. Der Geschwindigkeitsvorteil durch das Weglassen ist vernachlässigbar.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Was macht ExpandFileName?

  Alt 1. Nov 2017, 19:16
Code:
c:\temp\dateiname.ext -> absoluter Pfad.

.\Dateiname.ext -> relativer Pfad, im gleichen Verzeichnis, in dem wir uns befinden, also z. B. das Arbeitsverzeichnis eines Programmes.
1. ist klar.

2. ExtractFilePath(Application.Exename) + Copy('.\Dateiname.ext',2,Length('.\Dateiname.ext');
Dürfte (in etwa) ExpandFileName('.\Dateiname.ext') entsprechen, mit dem Unterschied: ExpandFileName bildet alle weiteren Möglichkeiten von relativen Pfaden mit ab, die man sonst einzeln "nachprogrammieren" müsste.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf