ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
212
212
EMPFEHLEN
-
25.08.11 10:43 #1
Hallo ich wollte mit C++ unter Windows den Ordner Pfad meine Programms ermitteln.
Mit
bekomme ich den pfad zwar auch aber auch mit test.exe hinten und das will ich nett.Code cpp:1 2
char exepfad[128]; GetModuleFileName(NULL, exepfad, 128);
Ich habe schon daran gedacht einfach die zeichen (8) zu löschen aber wenn der user irgendwas umbennent naja...
Danke MFGFehlermeldung bitte!
Google - Dein Freund und Helfer
-
Hallo,
Du kannst den String nehmen den dir GetModuleFileName zurückgibt, aber diesen nur bis zum letzten Backslash nutzen. Das stimmt dann immer und ist vom Dateinamen unabhängig.
-
25.08.11 11:03 #3
Danke nur wie kann ich das machen****
Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
Code cpp:
1 2 3 4 5 6 7 8 9
int lastBS = 0; for (int i = 0; i < strlen(exepfad); i++) { if (exepfad[i]=='\\') lastBS = i; } char* exedir = new char[lastBS]; strncpy(exedir, exepfad, lastBS);
Ich habs jetzt nicht getestet, aber grundsätzlich sollte es stimmen.
-
Den string mit einer for-Schleife "rückwärts" durchlaufen und jedes einzelne Zeichen auf "/" oder "\" überprüfen. Sobald dir die überprüfung ein TRUE liefert, weißt du, dass du am ersten --- also letztem Slash-Zeichen --- bist. Den "restlichen"-string kannst du dann in einen anderen schreiben und hast somit "nur" den Programm-Pfad.
Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
-
25.08.11 11:19 #6
@Steiner_B die Funktion funktioniert soweit nur das am ende so zeichen kommen:
viele ^2 und noch einhalb zeichen und weiße Vierecke.
muss man da verstehen **** ?-)Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
Lässt einfach die letzten zeichen weg. Nur genau die Anzahl an Zeichen verwenden, so lange auch der Pfad ist. Die anderen Zeichen lässt du einfach weg. Kopiere die notwendigen Zeichen einfach in einen neuen string, dann sollte es passen.
Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
-
Das liegt daran, das C-Strings immer mit \0 aufhören müssen.
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13
int lastBS = 0; for (int i = strlen(exepfad); i > 0 ; i--) { if (exepfad[i]=='\\') { lastBS = i; return; } } char* exedir = new char[lastBS + 1]; strncpy(exedir, exepfad, lastBS); exedir[lastBS] = '\0';
-
Das geht doch auch einfacher:
Code cpp:1 2 3 4 5 6 7
char exepfad[MAX_PATH]; GetModuleFileName(NULL, exepfad, MAX_PATH); char* lastBS = strrchr(exepfad, '\\'); if (lastBS != NULL) { *lastBS = '\0'; } // Verzeichnis steht jetzt in exepfad
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Wenn du Startparameter hast, weshalb nicht einfach argv[0] abfragen?
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12
int main(int argc, char* argv[]) { //... printf(argv[0]); //Ausgabe char exepath[256]; strcpy(exepath,argv[0]); //und jetzt aus Matthias' Beitrag char* lastBS = strrchr(exepfad, '\\'); if (lastBS != NULL) { *lastBS = '\0'; } }
Gruss
cwriterIntel inside - Idiot outside :-)
Ich schreibe in C und bin Anfänger.
______________________________
Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
Danke
-
25.08.11 19:58 #11
Danke hat geklappt mach jezt das beste aus den Beispielen
EDIT: Sry cwriter habe nicht rechtzeitig gelesen-.-
Grund das ist ein WinApi Projekt und mit den main parametern hab ich nicht so -.-Fehlermeldung bitte!
Google - Dein Freund und Helfer
Ähnliche Themen
-
Ftp Pfad ordner auslesen.
Von ciberjoerg im Forum PHPAntworten: 0Letzter Beitrag: 03.11.08, 20:48 -
Pfad des eigenen Programms auslesen (VB.NET)
Von Der_Wanderer im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 07.05.07, 13:15 -
Pfad des Programms ermitteln
Von Terminator 2005 im Forum VisualStudio & MFCAntworten: 4Letzter Beitrag: 03.03.06, 15:41 -
Pfad des Programms
Von jessy_musik im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 17.11.04, 17:10 -
Pfad zu einem Ordner
Von lugi im Forum PHPAntworten: 5Letzter Beitrag: 10.08.03, 22:10





Zitieren

Login






