Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anwendungsstart über Link - ParamStr(0) nicht pfad zur exe (https://www.delphipraxis.net/131746-anwendungsstart-ueber-link-paramstr-0-nicht-pfad-zur-exe.html)

enebk 30. Mär 2009 11:46


Anwendungsstart über Link - ParamStr(0) nicht pfad zur exe
 
Hallo Delphi-Gemeinde!

In meinem Programm wird beim Starten mit
ExtractFilePath(ParamStr(0));
der Pfad zur exe bestimmt. Wenn man es aber über einen Link (Desktop/ Startmenü) startet gibt ParamStr(0) den Pfad zur .lnk-Datei (C:/.../Dektop/ z.B.) zurück.

Alternativen wie GetCurrentDir oder Application.ExeName funktionieren auch nicht.

Was für Ansätze gibt es noch?

Viele Grüße

hoika 30. Mär 2009 11:49

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Hallo,

Delphi-Quellcode:
var
  szLibFileName   : array[0..MAXPATH] of Char;
begin
        GetModuleFileName(HInstance, szLibFileName, SizeOf(szLibFileName)-1);



Heiko

worker 30. Mär 2009 11:52

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Hmm, bei mir gibt ExtractFilePath(ParamStr(0)) im OnCreate den korrekten Pfad zur Exe zurück; egal ob direkt getartet, oder per Verknüpfung die irgendwo liegt.

Muetze1 30. Mär 2009 12:01

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von enebk
der Pfad zur exe bestimmt. Wenn man es aber über einen Link (Desktop/ Startmenü) startet gibt ParamStr(0) den Pfad zur .lnk-Datei (C:/.../Dektop/ z.B.) zurück.

Du hast definitiv die EXE kopiert anstatt einen Link erzeugt.

enebk 30. Mär 2009 12:11

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von Muetze1
Du hast definitiv die EXE kopiert anstatt einen Link erzeugt.

Ne, ist schon ein richtiger Link.

Habe die Lösung jetzt gefunden:
Die Links wurden von Inno Setup erstellt. Der Pfad zu Anwendung wurde in der .lnk-Datei richtig eingegeben, es fehlte aber die Angabe "Ausführen in..." !!!

Ohne diese Angabe wird die Anwendung in dem Ordner ausgeführt, in welchem die .lnk-Datei liegt!


Problem gelöst (... zumindest muss im Inno-Setup jetzt noch das Script verändert werden)!

DevilsCamp 30. Mär 2009 12:23

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von enebk
Habe die Lösung jetzt gefunden:
Die Links wurden von Inno Setup erstellt. Der Pfad zu Anwendung wurde in der .lnk-Datei richtig eingegeben, es fehlte aber die Angabe "Ausführen in..." !!!

Ohne diese Angabe wird die Anwendung in dem Ordner ausgeführt, in welchem die .lnk-Datei liegt!

Auch wenn "Ausführen in..." nicht gesetzt ist:
Code:
ExtractFilePath(ParamStr(0))
sollte dennoch den Pfad zur EXE-Datei ausgeben. Welchen Wert hat ParamStr(0) bei dir?

Relicted 30. Mär 2009 12:30

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Ich weiß nicht mehr in welcher Konstellation es war aber ich habe den Effekt auch schon gehabt.
Paramstr(0) gab bei mir auch etwas anderes zurück als erwartet. Ich habe mir daher angewöhnt mit Application.ExeName zu arbeiten - da hatte ich bisher keine Probleme mit dem Aufruf.

Gruß
Reli

mjustin 30. Mär 2009 12:41

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von Relicted
Ich weiß nicht mehr in welcher Konstellation es war aber ich habe den Effekt auch schon gehabt.
Paramstr(0) gab bei mir auch etwas anderes zurück als erwartet. Ich habe mir daher angewöhnt mit Application.ExeName zu arbeiten - da hatte ich bisher keine Probleme mit dem Aufruf.

Gruß
Reli

Application.Exename versagt allerdings bei Diensten und DataSnap-Anwendungen. Dass ParamStr(0) auch nicht zuverlässig ist, wusste ich auch bis heute nicht. GetModuleFileName wurde in der JCL bisher anscheinend noch nicht schick a la Delphi gekapselt...

Cheers

Meflin 30. Mär 2009 12:42

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von Relicted
Paramstr(0) gab bei mir auch etwas anderes zurück als erwartet. Ich habe mir daher angewöhnt mit Application.ExeName zu arbeiten - da hatte ich bisher keine Probleme mit dem Aufruf.

Das ist, nun, sagen wir mal - witzig. Denn Application.ExeName benutzt doch intern nix anderes als ParamStr(0)...

Relicted 30. Mär 2009 12:45

Re: Anwendungsstart über Link - ParamStr(0) nicht pfad zur e
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Relicted
Paramstr(0) gab bei mir auch etwas anderes zurück als erwartet. Ich habe mir daher angewöhnt mit Application.ExeName zu arbeiten - da hatte ich bisher keine Probleme mit dem Aufruf.

Das ist, nun, sagen wir mal - witzig. Denn Application.ExeName benutzt doch intern nix anderes als ParamStr(0)...

Das ist mir wiederrum neu - aber gut habe mich auch noch ned weiter damit befasst. In diesem einen besonderen Fall funktionierte es nur so. Warum auch immer... vielleicht habe ich auch unbemerkt irgendwas anderes geändert was das beeinflusst *shrug*


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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