aktuellen pfad auslesen
-
Du könntest es prinzipiell auch über system(); machen...
-
die windows api habe ich sowieso importiert die brauch ich noch für was anderes
hab mir das mit getcurrent ... mal angeschaut da ist irgendwas mit :: das versteh ich nicht
wie müsste es denn ausshene? kann mir das jemand mal erklären möchte einfach den pfad einer variablen zuordnen
-
-
Ich würds einfach per GetModuleFilenameEx machen:
TCHAR buffer[MAX_PATH]; if(size_t len = GetModuleFileNameEx(GetCurrentProcess(), 0, buffer, sizeof(buffer)/sizeof(TCHAR))) { do { if(buffer[--len]=='\\') { buffer[len] = 0; break; } } while(len); }
Also Aufruf, Suchen des letzten '\' und Nullsetzen.
buffer
enthält nun den Pfad.
-
Oh, oh, len ist unsigned, sollte aber signed sein.
@dot: per SetCurrentDirectory kann dieses aber auch geändert werden...
-
Hmmh schrieb:
@dot: per SetCurrentDirectory kann dieses aber auch geändert werden...
Darum heißt's ja auch "aktueller Pfad" und nicht "ewiger Pfad"... :p
-
Ich wollte nur darauf hinweisen, dass
GetCurrentDirectory
keine zuverlässige Methode ist, den Pfad der ausführbaren Datei zu erhalten.Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
-
Hmmh schrieb:
Ich wollte nur darauf hinweisen, dass
GetCurrentDirectory
keine zuverlässige Methode ist, den Pfad der ausführbaren Datei zu erhalten.Ok, ich ging davon aus dass er eigentlich das Working Directory meint und nicht den Pfad der exe. Für den Pfad zur exe is natürlich GetModuleFileName() the way to go, da hast du recht.
-
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
-
_Luckie schrieb:
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
Ich hatte angenommen, dass das Arbeitsverzeichnis standardmäßig auf den Pfad der ausführbaren Datei gelegt wird, zwischenzeitlich aber durch GetOpenFileName etc. geändert werden kann.
Wie geschrieben, der Pfad der ausführbaren Datei sollte damit nicht bestimmt werden.
-
So ist es.
Arbeitsverzeichnis -> GetCurrentDirectory()
Pfad zur exe -> GetModuleFileName()
-
Hmmh schrieb:
_Luckie schrieb:
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
Ich hatte angenommen, dass das Arbeitsverzeichnis standardmäßig auf den Pfad der ausführbaren Datei gelegt wird, zwischenzeitlich aber durch GetOpenFileName etc. geändert werden kann.
Wie geschrieben, der Pfad der ausführbaren Datei sollte damit nicht bestimmt werden.
Es reicht schon bei einer Verknüpfung ein anderes Arbeitsverzeichnis anzugeben.
-
Hmmh schrieb:
Ich würds einfach per GetModuleFilenameEx machen:
TCHAR buffer[MAX_PATH]; if(size_t len = GetModuleFileNameEx(GetCurrentProcess(), 0, buffer, sizeof(buffer)/sizeof(TCHAR))) { do { if(buffer[--len]=='\\') { buffer[len] = 0; break; } } while(len); }
Also Aufruf, Suchen des letzten '\' und Nullsetzen.
buffer
enthält nun den Pfad.ist das nur der pfad oder auch der pfad + name der exe?
-
Das steht in der Doku.
-
hans, mal ernsthaft, willst du uns hier eigentlich alle verarschen? Lies mal die Posts durch! Da wirst du die Antwort finden!
Wir machen keine Hausaufgaben
-
das verwirrt mich:
Also Aufruf, Suchen des letzten '\' und Nullsetzen. buffer enthält nun den Pfad.
-
was ist ein pfad?
-
Frag doch nen Pfadfinder!
-
dot schrieb:
Hmmh schrieb:
@dot: per SetCurrentDirectory kann dieses aber auch geändert werden...
Darum heißt's ja auch "aktueller Pfad" und nicht "ewiger Pfad"... :p
-
Ansonsten sollte bei einem C-Programm mit einer main ein Einstiegspunkt auch argv[0] den voll qualifizierten Namen des Programms geben.
Das Arbeitsverzeichnis holst Du Dir, wie beschrieben oder auch nicht.
Falls den nicht weiß, was voll qualifizierte Name heißt goggle full qualified filename.
Alternative schau Dir bei Deinem Porgramm argv[0] an.
Obwohl nach Deinen Auslassungen zu den Antwortspost, denke ich das Du ein Troll bist, dem die Zimtplätzchen auf den Magen schlugen.