Aktueller OrdnerPfad



  • Hallo.

    Ich wollte mir mit der Funktion GetCurrentDirectoryW() den Aktuellen Ordner Pfad holen. Weil ich über GetPrivateProfileString() eine INI Datei auslesen wollte.
    Da muss man aber den kompletten Pfad zur INI eingeben, sonst sucht die Funktion im Windows Ordner dannach. Das ist natürlich nicht Sinn der sache.

    Und den Kompletten Pfad kann ich nicht eingeben, weil die INI Datei bei dem Programm was ich schreibe, liegen sollte und damit ist der pfad ja dynamisch. Je nachdem wo das Programm jetzt liegt.

    So ich hole mir jetzt den Aktuellen Ordner Pfad:

    TCHAR cDic[BUFSIZE];
    	GetCurrentDirectoryW(BUFSIZE,cDic);
    

    Und trage es in GetPrivateProfileString ein:

    CString pBuf;
    GetPrivateProfileString(_T("settings"),_T("Name"),_T("Error"),pBuf.GetBuffer(254),254,cDic);
    

    Das Funktioniert so natürlich nicht. Weil der Pfad normal ausgelesen wird ( C:\Temp) In GetPrivateProfileString musse s aber mit 2 \\ sein, also C:\\Temp\\settings.ini

    Ich dachte mir erst, dann mach ich cDic auch als CString und kann den String dann immer noch \ teilen bzw mit \\ ersetzen und am ende das settings.ini anfügen. Aber GetCurrentDirectory unterstützt keine CStrings.

    Ok hat sich schon erledigt. Konnte die TCHAR varibale als CString casten und dann über Format die settings.ini dranhängen.


  • Mod

    1. Das ist doch Quatsch. Nur in den C-Sourcen benötigt man ein doppeltes \\ für den Escape.
    Wenn die Daten aus der INI Datei gelesen werden benötigt man nur einen Backslash, genauso wie es eben auch sein mauss.
    2. Benutze GetModuleFileName um den Pfad Deiner EXE zu emritteln. Schmeiß den dateinamen Weg und ersetze ihn durch Deinen INIT-Dateinamen und benutze den kompletten Pfadnamen in GetProvateProfileString


Anmelden zum Antworten