![]() |
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 |
Re: Pfad der eigenen Anwendung - ohne Application. Param...
Ich nehme an, du meinst ohne "Application.ExeName". Du kannst stattdessen "ParamStr(0)" benutzen, ist dasselbe.
|
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 |
Re: Pfad der eigenen Anwendung - ohne Application. Param...
Das sollte funktionieren:
Delphi-Quellcode:
Grüße vom marabu
uses
Windows; function ExeName: string; begin SetLength(Result, 261); SetLength(Result, GetModuleFileName(0, @Result[1], Length(Result))); end; |
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 ![]() |
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 |
Re: Pfad der eigenen Anwendung - ohne Application. Param...
Moin tn249,
Zitat:
Es ist eben der Pfad und nicht das Verzeichnis der Anwendung. ;-) |
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:
|
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, |
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:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz