Delphi Bekommen Speicherort der Datei
Festzustellen, meine exe Weg, ich weiß nicht, welchen code ich verwenden soll.
Bitte geben Sie mir die Erklärung, Wann und warum sollten wir nutzen:
1. ExtractFilePath(ParamStr(0))
2. ExtractFilePath(Application.ExeName)
Weil beide Codes sind für rendering die gleiche Leistung.
C:\Users\Bianca\Documents\RAD Studio\Projects\Exam1\Win32\Release\
C:\Users\Bianca\Documents\RAD Studio\Projects\Exam1\Win32\Release\
Application.ExeName
getter ruft intern ParamStr(0)
.Also option 2 ist immer bevorzugt ?
Das ist es, was niemand sagen kann. Wenn Sie nicht möchten, verlassen Sie sich auf die
Application
Objekt (das muss Forms
Einheit und erfordert Ihre Anwendung die VCL-Formulare-Anwendung), verwenden Sie ParamStr(0)
. Wenn Sie ein VCL-Formulare-Anwendung, und es Ihnen nichts ausmacht, gehören Forms
Einheit, die Sie verwenden können, eine besser lesbare Application.ExeName
. Ich bevorzuge ParamStr(0)
.Danke @TLama Es ist mir klar, jetzt. 😉
Ich denke, dass ParamStr(0) nicht gut Vorform, wenn die Anwendung auf einem Netzwerk-share.
InformationsquelleAutor Bianca | 2014-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide geben das gleiche Ergebnis, aber es gibt subtile Unterschiede.
Anwendung.Programmname verweist auf die VCL-Anwendung-Objekt. Die Verwendung dieser Eigenschaft erfordert die Verwendung der Vcl.Bildet Einheit. Intern bedeutet dies nennen die ParamStr(0) - Funktion.
Beachten Sie, dass die FireMonkey-TApplication Klasse unterstützt diese Eigenschaft nicht haben (XE5). Sie können also den Anruf-Anwendung.Programmname wenn Sie mit FireMonkey. Und wenn Sie schon einmal migrieren, die einem VCL-Projekt zu FireMonkey müssen Sie diese umschreiben.
Den ParamStr-Funktion OTOH ist das System-Einheit und ist für mehrere Plattformen (Win, Mac, iOS und Android, je nach OC auf die Delphi-version Sie verwenden). Auf Windows ParamStr(0) ruft die Funktion GetModuleFileName, während auf den anderen Plattformen es analysiert die Befehlszeile Rückkehr das erste token, das sollte der vollständige Pfad und name der ausführbare. (Dank Rob Kennedy für diese Korrektur)
Also... ich würde vorschlagen, Sie verwenden ParamStr(0) direkt.
ParamStr(0)
nicht wieder die "erste parameter der Befehl." Sie denken von Unix und C istargv
array, wo das Betriebssystem und die Laufzeitumgebung weiterleiten, was auch immer beliebiger Wert übergeben wurde, zuexecv
, mit der Hoffnung, dass es den Namen des Programms. In Delphi, die Funktion behandelt 0 speziell und fordertGetModuleFileName
direkt abrufen der Namen der EXE-Datei (unter Windows, wie auch immer; ich kenne keine Umsetzung für andere Plattformen).Danke für den Hinweis it out, ich habe den code aktualisiert und die Antwort.
InformationsquelleAutor Frazz
Sind Sie funktionell identisch. Verwenden Sie
ParamStr(0)
wenn Sie nicht wollen, den Aufwand derForms
Gerät und alle es ' s Gepäck.InformationsquelleAutor Andy_D