Datei Pfad finden zum Benutzen der Ini Datei



  • hey Leute,

    Ich will eine Ini Datei auslesen, die sich im selben Ordner wie mein Programm befindet. Ich hab also mit dieser Funktion den Pfad meiner exe herausgefunden:

    CString GetApplicationDirectory() 
    { 
       TCHAR szPathName[_MAX_PATH]; 
       ::GetModuleFileName(NULL, szPathName, _MAX_PATH); 
       LPTSTR pszFileName = _tcsrchr(szPathName, '\\') + 1; 
       *pszFileName = '\0'; 
       return szPathName; 
    }
    

    Dann hättte ich einfach nur noch den Namen meiner Ini Datei draufgeschoben, dass Problem ist:

    Die Funktion liefert mir den Pfad so:

    C:\Users\Name\Documents\Visual Studio 2010\Projects\INI\Debug\
    

    Das es funktioniert, müsste es so sein:

    C://Users/Name/Documents/Visual Studio 2010/Projects/INI/Debug/
    

    Wie könnte ich das "Problem" lösen?
    Bitte seit nicht so hart mit mir, hab erst vor kurzer Zeit mit c++ angefangen^^

    Danke im vorhinein 🙂



  • shock schrieb:

    Das es funktioniert, müsste es so sein:

    C://Users/Name/Documents/Visual Studio 2010/Projects/INI/Debug/
    

    Warum?



  • Weil man nur so die INI Datei auslesen kann, zumindest ging es bei mir nicht 😕



  • Ich hab zwar keine Ahnung, warum du CString verwendest, wenn es in C++ den std::string gibt, aber wenn der Iteratoren bietet, geht das so:

    std::replace(beginiter, enditer, '/', '\\');
    


  • Ich liebe char arrays auch ;-).

    CString GetApplicationDirectory() 
    { 
       TCHAR szPathName[_MAX_PATH]; 
       ::GetModuleFileName(NULL, szPathName, _MAX_PATH); 
       LPTSTR pszFileName = _tcsrchr(szPathName, '\\') + 1; 
       *pszFileName = '\0';
    
       for(char *fname = szPathName; *fname;++fname)if(*fname=='\\')*fname='/'; // ungetestet
       return szPathName; 
    }
    


  • @shock: Es liegt mit Sicherheit nicht an den Backslashes, dass es nicht geht. Unter Windows sind Backslashes DIE Seperatoren - auch wenn / auch geht.

    @PI: Manchmal besteht das ganze Umfeld aus Klassen mit C am Anfang, CArray, CFile, CWasweisIch... und dann finde ich es nicht so unangebracht auch gleich den CString zu verwenden. Es macht keinen Sinn in einem Framework von gut interagierenden Klassen, Klassen zu verwenden die jedesmal Code für die "Konvertierung" brauchen.
    (BTW: natürlich gehts mir nicht um die Klassennamen mit C...)



  • Wow, Danke für die Hilfen!

    Das klappt schon mal, ich müsste jetzt nur noch den Dateinamen der Ini Datei auf das "addieren", wollte das direkt in der Funktion machen, doch irgendwie ging das nicht.

    Könnte mir das wer zeigen?

    wieder danke im vorhinein 🙂



  • Also wenn du mit GetModule... WinAPI arbeitest dürftest du string concates locker anlesen können! Und weil ich so krass großzügig bin gibt es hier sogar noch einen link http://www.cplusplus.com/reference/clibrary/cstring/strcat/


Anmelden zum Antworten