Registry und INI-Dateien



  • Hallo Zusammen!

    bietet C irgendwelche Funktionen zum Lesen und Schreiben von Konfigurationseinstellungen entweder in eine INI-Datei (http://de.wikipedia.org/wiki/INI-Datei) oder in die Windows-Registry?
    Ich würde mir, wenn es geht sowas wie ein Ordner oder so (sowas gibt es doch in der Registry, oder?) erstellen und da meine Programmschlüssel schreiben.
    Werden die INI-Dateien meistens mit fprintf(); und fscanf(); gelesen? Das geht doch auch anders, oder nicht?

    Vielen Dank schon mal.



  • Mit ANSI C hat das weniger zu tun. Die WinAPI bietet Funktionen zum Zugriff auf die Registry, weswegen ich dich mal dahin verschiebe. Ob die WinAPI auch Funktionen zum einfacheren hantieren mit ini-files wird sich dort sicher auch klären 😉



  • Dieser Thread wurde von Moderator/in TactX aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.




  • Mod

    Auch entsprechende Funktionen zum Lesen von INI Dateien sind in dr Win32 API verankert.

    Ansonten gibt es auch Code, der dies ohne die entsprechende API kann:
    http://www.codeproject.com/useritems/SimpleIni.asp



  • Danke, aber das sieht irgendwie noch ein bisschen komisch aus...
    ich möchte ja auch ini-Dateien schreiben. Also prinzipiell reicht es mir, wenn mein Programm eine Datei öffnet, und zu einem Schlüsselwort (z.B. Bildposition=, Hintergrundsfarbe=, ...) irgendwelche Werte schreibt, die ich dann wieder auslesen kann. (Also das Prog Sucht den Wert für Position, usw.)
    Muss das wirklich so kompiziert sein?



  • Nein für ini dateien gibt es auch 2 nette kleine funktionen für. Aber die hab ich jetzt nicht hier aber ich such sie dir mal zu morgen raus.

    MfG schirrmie



  • Das kannst du doch mit WritePrivateProfileString machen (siehe mein Link etwas weiter oben) 😕



  • Ja genau die Funktion meinte ich auch. Da hab ich im Netz irgendwo mal die kleinen Funktionen gefunden, vielleicht helfen sie dir ja.

    int ReadINIInt(char *Section, char *Key, char *File)
    {
    	char acString[512];
    	GetPrivateProfileString(Section, Key, "[NOT FOUND]",
    		acString, 512,
    		File);
    	if(!strcmp(acString, "[NOT FOUND]")) {
    //		Fehlerbehandlung
    		return 0;
    	}
    	return atoi(acString);
    }
    char* ReadINIString(char *Section, char *Key, char *File)
    {
    	char acString[512];
    	GetPrivateProfileString(Section, Key, "[NOT FOUND]",
    		acString, 512,
    		File);
    	if(!strcmp(acString, "[NOT FOUND]")) {
    //		Fehlerbehandlung
    		return "";
    	}
    	return acString;
    }
    
    bool WriteINIInt(char *Section, char *Key, char *File, int i)
    {
    	char acString[256];
    	itoa(i, acString, 10);
    
    	if(!WritePrivateProfileString(Section, Key, acString, File))
    		return false;
    
    	return true;
    }
    bool WriteINIString(char *Section, char *Key, char *File, char *str)
    {
    	if(WritePrivateProfileString(Section, Key, str, File))
    		return false;
    
    	return true;
    }
    

    Sollte man aber denk ich noch bissel anpassen.

    MfG schirrmie


Log in to reply