Ini-File im Programmordner speichern



  • Moin,

    ich wollte in meinem kleinen Programm mit ini-Files arbeiten. Wenn ich jetzt allerdings einfach mit WritePrivateProfileString arbeite speichert er das ini.File im Windows-Ordner. Wie kann ich das ini-File im Ordner speichern, wo sich auch das Programm befindet?

    Danke im voraus



  • Indem du als letzten Parameter nen absoluten und keinen relativen Pfad angibst ?



  • Das kannst du dann irgendwie so machen:

    CHAR szIniFile[MAX_PATH]; 
    GetModuleFileName(NULL,szIniFile,sizeof(szIniFile)); 
    *(strrchr(szIniFile,'\\')+1) = 0; 
    lstrcat(szIniFile,"config.ini");
    


  • Danke flenders hat bestens funktioniert.



  • Noch ne kurze Nachfrage.

    Gibt es eine Funktion um Sachen im Ini-File zu löschen?



  • Indem Du den Wert NULL als zu schreibenden Wert des Keys angibst.

    WritePrivateProfileString("Allgemein", "Key", NULL, szINI);
    // löscht "Key" aus der Sektion "Allgemein"
    


  • Danke Hepi

    Habe aber noch eine Frage. 🙂

    Ich wollte mit GetPrivateProfileString alle Section Namen auslesen.
    Ich dachte mir das so:

    result=GetPrivateProfileString(NULL,"Key","Test",buffer,250,szIniFile);
    

    Allerdings bekomme ich immer nur den ersten Section Namen, laut result bekomme ich aber mehr Zeichen als später im Buffer stehen.

    lpAppName
    [in] Pointer to a null-terminated string that specifies the name of the section containing the key name. If this parameter is NULL, the GetPrivateProfileString function copies all section names in the file to the supplied buffer.



  • <OT>
    Was ist an *.ini-Files eigentlich so besonders? Was spricht dagegen sein Einstellungen, etc. einfach so in eine Datei zu schreiben? Warum eigene Zugriffsfunktionen?
    </OT>

    MfG SideWinder



  • Lupus schrieb:

    Allerdings bekomme ich immer nur den ersten Section Namen, laut result bekomme ich aber mehr Zeichen als später im Buffer stehen.

    lpAppName
    [in] Pointer to a null-terminated string that specifies the name of the section containing the key name. If this parameter is NULL, the GetPrivateProfileString function copies all section names in the file to the supplied buffer.

    Dein Buffer sieht sicherlich so aus:
    "Sektion1\0Sektion2\0Sektion3\0\0"

    @Sidewinder:
    Ich mag an INI-Files das sie so einfach zu benutzen sind. Man muß nur 1 Funktion zum Auslesen kennen und benutzen (GetPrivateProfileString), das ist alles! 🕶


Anmelden zum Antworten