Entwickler-Ecke

Sonstiges (Delphi) - ExtractFilePath(ParamStr(0)); vs getdir(0,x);


catweasel - Do 23.12.04 17:50
Titel: ExtractFilePath(ParamStr(0)); vs getdir(0,x);
Hi,

mal ne allgemeine Frage....

Immer wenn hier im Forum, oder in online tuts, den aktuellen Anwendungspfad herausbekommen moechte, verwendet er/sie die ExtractFilePath(ParamStr(0)) Methoden.
Ich persoenlich verwende lieber:


Delphi-Quelltext
1:
2:
3:
4:
var
pfad : string;

getdir(0,pfad);


Ist ja nur ein Methodenaufruf. (Bei dem anderen Weg werden ja zwei Methoden ParamStr und Extractfilepath aufgerufen...

Ist da Geschmack das einzige Kriterium, oder gibt es gute Argumente fuer die erste Variante......
(Ich frag mich warum die getdir(); Funktion soooo unpopulaer zu sein scheint... :nixweiss: )

Danke fuer ein paar Kommentare.. :-)

Catweasel


Christian S. - Do 23.12.04 17:53

Hallo!

Delphi-Hilfe:

GetDir
Returns the current directory for a specified drive.


Und das aktuelle Verzeichnis muss nicht immer das Verzeichnis sein, in dem die Anwendung liegt!

MfG
Christian


Stefan S. - Do 23.12.04 17:53

Ähm... Ist doch eigentlich egal, solange es funktioniert, oder? Als ich gefragt hab, wie man den Anwendungspfad herausbekommt, wurde mir "ExtractFilePath(ParamStr(0))" empfohlen. Funktioniert. Wenn deine Methode auch funktioniert, dann is ja gut! ^^ Aber ich versteh nicht, worüber hier jetzt diskutiert werden soll...

EDIT:
Zitat:
Und das aktuelle Verzeichnis muss nicht immer das Verzeichnis sein, in dem die Anwendung liegt!


Da hast du's! ^^


AXMD - Do 23.12.04 17:53

Vielleicht weil GetDir schon eine sehr veraltete Funktion ist. Meines Wissens stammt sie noch aus DOS-Zeiten und funktionierte auch schon unter Turbo Pascal (bin mir aber nicht sicher...)

AXMD


Delete - Do 23.12.04 18:04

DaSteve hat folgendes geschrieben:
Ähm... Ist doch eigentlich egal, solange es funktioniert, oder?

Eine tickende Zeitbombe geht auch irgendwann mal hoch, ist nur eine Frage der Zeit.
Der Benutzer braucht nur ein anderes Arbeitsverzeichnis in der Verknüpfung angeben und das war es dann gewesen. Genauso verhält es sich, wenn er mit dem OpenDialog oder SaveDialog eine Datei öffnet und dabei das Verzeichnis wechselt, dann isat das aktuelle Verzeichnis nämlich nicht mehr das Anwendungsverzeichnis.


Christian S. - Do 23.12.04 18:09

Als DaSteve das schrieb, hatte er mein Posting wohl noch nicht gelesen. Hier sind drei Postings in der gleichen Minute reingeschneit ;-)


retnyg - Do 23.12.04 19:00

extractfilepath(application.exename) is auch möglich... (mein favorit)


StefanH - Do 23.12.04 20:29

retnyg hat folgendes geschrieben:
extractfilepath(application.exename) is auch möglich... (mein favorit)


IMHO ruft "Application.ExeName" "ParamStr(0)" auf...


.Chef - Do 23.12.04 20:36

retnyg hat folgendes geschrieben:
extractfilepath(application.exename) is auch möglich... (mein favorit)

Ich nehme eigentlich auch immer das, ohne jemals so tiefsinnig darüber philosophiert zu haben. ParamStr(0) ist historisch zwar tiefer verwurzelt, aber im Zuge der Objektisierung hab ich mir das wohl abgewöhnt. :nixweiss:


Delete - Do 23.12.04 21:37

Bei einem Konsolenprogramm ohne die Klasse TApplication geht es aber nur mit ParamStr(0);