Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Pfad der eigenen Anwendung - ohne Application. Param... (https://www.delphipraxis.net/50838-pfad-der-eigenen-anwendung-ohne-application-param.html)

tn249 1. Aug 2005 20:01


Pfad der eigenen Anwendung - ohne Application. Param...
 
Hallo,

Hab keine Ahnung ob das was ich versuche überhaupt funktioniert, aber fragen kann man ja mal.

Ich habe eine Klasse, also den Protoptyp eines Objekts.

Im constructor der Klasse möchte ich den Pfad der Anwendung in eine Variable schreiben, jedoch ohne eine Variable aus der aufrufenden Funktion zu übergeben.

Geht das evtl. über irgendwelche API-Aufrufe?

Welche anderen Ansätze gibt es?

Gruß
tn249

SMO 1. Aug 2005 20:06

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Ich nehme an, du meinst ohne "Application.ExeName". Du kannst stattdessen "ParamStr(0)" benutzen, ist dasselbe.

tn249 1. Aug 2005 20:10

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Ich meinte .Paramstr(0), .Exename basiert auf .Paramstr(0).

In dem von mir oben geschildertem Fall hab die gesamte "Application" nicht zur Verfügung.

Gruß
tn249

marabu 1. Aug 2005 20:28

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Das sollte funktionieren:

Delphi-Quellcode:
uses
  Windows;

function ExeName: string;
begin
  SetLength(Result, 261);
  SetLength(Result, GetModuleFileName(0, @Result[1], Length(Result)));
end;
Grüße vom marabu

SMO 1. Aug 2005 20:30

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Ja, genau, Application.ExeName basiert auf ParamStr(0). Die ParamStr-Funktion kommt aus der Unit "System" und ist daher überall verfügbar, auch ohne Application-Objekt.

Also kannst du ParamStr(0) benutzen. Oder gleich die WinAPI-Funktion GetModuleFileName, die ruft ParamStr(0) nämlich intern auf.

tn249 1. Aug 2005 20:40

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Gut vielen Dank euch beiden. Es funktioniert soweit.

Der Vollständigkeit halber erwähne ich jedoch noch, dass GetModuleFileName nicht nur den Pfad liefert, sondern auch noch den Dateiname selbst. (Zumindest in meinem Test)

aber das ist ja mit EctractFilePath dann kein großes Ding mehr.

Gruß
tn249

Christian Seehase 1. Aug 2005 20:59

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Moin tn249,

Zitat:

Zitat von tn249
Der Vollständigkeit halber erwähne ich jedoch noch, dass GetModuleFileName nicht nur den Pfad liefert, sondern auch noch den Dateiname selbst.

was auch ParamStr(0) bzw. Application.ExeName auch tun.
Es ist eben der Pfad und nicht das Verzeichnis der Anwendung. ;-)

tn249 1. Aug 2005 21:07

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Hm. Ich glaub die 10 Stunden pralle Sonne und die giftige verstrichene Farbe ham doch etwas mehr als nur dröhnendes Hämmern in meinem Kopf hinterlassen :gruebel: :wall:

Olli 2. Aug 2005 09:00

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
@marabu: Statt 261 bitte "MAX_PATH+1" verwenden. Man sollte sich immer vor Augen halten, daß es auf der C-Seite #defines sind. Und die können sich potentiell auch ändern ;)

Und seien wir mal ehrlich, da es Literale sind, macht es doch auch zur Laufzeit keinen Unterschied. In der Wartbarkeit aber potentiell schon.

Beste Grüße an den marabu,

thule 26. Jan 2008 19:19

Re: Pfad der eigenen Anwendung - ohne Application. Param...
 
Hallo. Das ist mein erster Post und dann auch gleich schon eine frage.
Ich lerne delphi privat aus interesse und hier ist schon lange eine DER quellen für gute erklärungen.

Mich Interessiert:

wenn meine anwendung (console) als parameter [ParamStr(1)] einer anderen gestartet wird bekomme ich mit ParamStr(0) nur Die Hostanwendung. Wie komme ich an den Exe-Name meiner eigenen anwendungen IMMER mit sicherheit? Oder mache ich etwas falsch?

Gruß, Thule


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
Seite 1 von 2  1 2      

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