Pfad der Anwendung extrahieren
-
Hallo,
Es kommt darauf an mit welcher IDE du arbeitest. Falls du den BCB nimmst kannst du das da exakt so verwenden, ansonsten siehe Airdamn. Du mußt jetzt nur noch den Pfad extrahieren.
-
In C/C++ ist die Main-Methode ja mit folgender Signatur versehen:
int main (int argc, char* argv[])
(bzw. int main (int argc, char** argv).Dabei enthält argc die Anzahl der Kommandozeilenargumente und argv[0] den kompletten Pfad zu Anwendung.
Du könntest also folgendes tun:
std::string pfad; pfad = argv[0]; pfad = pfad.substr(0, pfad.find_last_of('\\',0));
-
Danke für die Antworten,
aber ich habe vergessen zu erwähnen, dass ich die MFC nutze, da bekomme ich die Parameter int argc, char* argv[] nicht übergeben. Wie muss ich das mit der MFC anstellen, wahrscheinlich bin ich im falschen Forum?
Danke noch mal.
Grüsse
xthing
-
Sid2K6 schrieb:
...
Dabei enthält ... argv[0] den kompletten Pfad zu Anwendung....Hmmm kann ich nicht so bestätigen. Hängt von der Implementierung der runtime-lib ab.
Oftmals enthält es auch nur das, was man auf der Kommandozeile zum Start des Programms angegeben hat (z.B. "./pgname" ).Standard sagt dazu (3.6.1.2) :
"...argv[0] shall be the pointer to the initial character of a NTMBS that represents the name used to invoke the programm or "". ....." (NTMBS = "null-terminated multibyte string")Gruß,
Simon2.
-
TCHAR szPath[MAX_PATH+1]; GetModuleFileName( NULL, szPath, MAX_PATH );
-
-
TCHAR szFile[MAX_PATH+1]; GetModuleFileName( NULL, szFile, MAX_PATH ); CString FullPath = szFile; int pos = FullPath.ReverseFind( _T( '\\' )); CString Path = FullPath.Left( pos );
-
Simon2 schrieb:
Sid2K6 schrieb:
...
Dabei enthält ... argv[0] den kompletten Pfad zu Anwendung....Hmmm kann ich nicht so bestätigen. Hängt von der Implementierung der runtime-lib ab.
Oftmals enthält es auch nur das, was man auf der Kommandozeile zum Start des Programms angegeben hat (z.B. "./pgname" ).Standard sagt dazu (3.6.1.2) :
"...argv[0] shall be the pointer to the initial character of a NTMBS that represents the name used to invoke the programm or "". ....." (NTMBS = "null-terminated multibyte string")Gruß,
Simon2.
Stimmt.
Ich rufe nur eben in der Test-Batch die Exe mit dem kompletten Pfad auf

Mea culpa, mea maxima culpa.
-
@Airdamn
Danke
-
Sid2K6 schrieb:
...
Mea culpa, mea maxima culpa.Ego te absolvo !

Gruß,
Simon2.