Autor |
Beitrag |
catweasel
Beiträge: 487
Erhaltene Danke: 1
Win 7 64bit
Delphi 7 Second Sedition V7.2
|
Verfasst: Do 23.12.04 17:50
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... )
Danke fuer ein paar Kommentare..
Catweasel
_________________ Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Stefan S.
Beiträge: 184
D5
|
Verfasst: 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! ^^
Zuletzt bearbeitet von Stefan S. am Do 23.12.04 17:54, insgesamt 1-mal bearbeitet
|
|
AXMD
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 23.12.04 19:00
extractfilepath(application.exename) is auch möglich... (mein favorit)
|
|
StefanH
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: 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...
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
.Chef
Beiträge: 1112
|
Verfasst: 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.
_________________ Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 23.12.04 21:37
Bei einem Konsolenprogramm ohne die Klasse TApplication geht es aber nur mit ParamStr(0);
|
|