tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
212
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo ich wollte mit C++ unter Windows den Ordner Pfad meine Programms ermitteln.
    Mit
    Code cpp:
    1
    2
    
    char exepfad[128];
    GetModuleFileName(NULL, exepfad, 128);
    bekomme ich den pfad zwar auch aber auch mit test.exe hinten und das will ich nett.
    Ich habe schon daran gedacht einfach die zeichen (8) zu löschen aber wenn der user irgendwas umbennent naja...

    Danke MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    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.
     

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke nur wie kann ich das machen****
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    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.
     

  5. #5
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    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.

  6. #6
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    @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

  7. #7
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    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.

  8. #8
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    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';
     

  9. #9
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    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

  10. #10
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    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
    cwriter
     
    Intel 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

  11. #11
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    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

  1. Ftp Pfad ordner auslesen.
    Von ciberjoerg im Forum PHP
    Antworten: 0
    Letzter Beitrag: 03.11.08, 20:48
  2. Pfad des eigenen Programms auslesen (VB.NET)
    Von Der_Wanderer im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 07.05.07, 13:15
  3. Pfad des Programms ermitteln
    Von Terminator 2005 im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 03.03.06, 15:41
  4. Pfad des Programms
    Von jessy_musik im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 17.11.04, 17:10
  5. Pfad zu einem Ordner
    Von lugi im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.08.03, 22:10

Stichworte