Verzeichnis-Pfad der Exe herausfinden



  • Hallo zusammen,

    wenn ich eine mit dem Borland Builder erstelltes Programm durch öffnen eines Save-Files starte, dass ich mit dieser Anwendung verknüpft habe, so liefert mir GetCurrentDir() den Pfad dieser Datei und nicht der Exe zurück. Mit welchem Befehl ist es möglich, immer den Pfad der Exe-Datei zu erhalten, z. B auch wenn das Programm durch eine Verknüpfung auf dem Desktop gestartet wurde?

    Gruss
    lodi



  • Hallo

    mal im Forum nach ExtractFilePath suchen 🙂

    mfg, Micha



  • Das geht mit ParamStr(0). Der gibt immer den kompletten Pfad zur gestarteten Exe-Datei. In Std-C ist das argv[0] von der Main. Borland verwaltet die jederzeit greifbar als _argv.

    Gruss,

    Martin



  • ich machs immer so:

    AnsiString TForm1::getProgDir()
    {
      AnsiString pfad = GetCommandLine();
      pfad = pfad.SubString(2, pfad.Pos("Planer.exe")-2); //Planer durch deinen Prognamen ersetzen 
    
      return pfad;
    }
    //---------------------------------------------------------------------------
    AnsiString TForm1::getProgPfad()
    {
      AnsiString pfad = GetCommandLine();
      return pfad;
    }
    //---------------------------------------------------------------------------
    


  • Hallo,

    @Dragonfire
    Ich hab dich in dem anderen Thread schon gefragt was passiert wenn jemand dein Programm von "Planer.exe" in "ichbineinprogramm.exe" umbenennt 😉

    @martin.stratmann...
    ParamStr(0) gibt nicht nur den Pfad sondern auch den Dateiennamen zurück. Ist jetzt die Frage ob der Dateiname benötigt wird

    mfg, Micha!



  • Dragonfire schrieb:

    ich machs immer so:

    AnsiString TForm1::getProgDir()
    {
      AnsiString pfad = GetCommandLine();
      pfad = pfad.SubString(2, pfad.Pos("Planer.exe")-2); //Planer durch deinen Prognamen ersetzen 
    
      return pfad;
    }
    ...
    

    und sobald jemand den Namen der Exe ändert geht nix mehr :p

    die Variante mit ExtractFilePath und Application->ExeName ist bei Verwendung der VCL am einfachsten und es ist egal wie die Exe heißt

    [Edit] etwas zu langsam 😉


Anmelden zum Antworten