Daten in der Registry und in einem *.ini-File speichern
-
Kommt drauf an ob der Eintrag Allgemeingültig ist - dann in den HK_LOCAL_MACHINE und wenn er Nutzerabhängig sein sollte dann in den HK_Current_User
-
Hallo AndyDD,
kennst du dich mit XML aus? Das Abspeichern in einem XML-File wäre eine Alternative zur Registry.Tester2
-
Tester2 schrieb:
Hallo AndyDD,
kennst du dich mit XML aus? Das Abspeichern in einem XML-File wäre eine Alternative zur Registry.Tester2
@Tester2: Leider nicht wirklich. Aber werde mich da mal schlau machen müssen. Aber kann man in einer XML-Datei nicht nur XML-Daten ablegen?
@CrazyPlaya: Werde es dann in HK_LOCAL_MASCHINE ablegen. Da muss ich allerdings die Einträge noch vom Programm erzeugen lassen, da es dort noch keine gibt. Wie kann man eigentlich abfragen ob es einen bestimmten Schlüssel schon gibt?
-
Mit RegCreateKeyEx s.MSDN
Erzeugt einen neuen Eintrag und wenn dieser schon vorhanden ist öffnet er diesen
-
Mit RegCreateKeyEx s.MSDN
Erzeugt einen neuen Eintrag und wenn dieser schon vorhanden ist öffnet er diesen
-
Werde ich mal machen. Ich hab jetzt mal ein wenig mit GetPrivateProfileString() und WritePrivateProfileString() rumprobiert. Man kann damit zumindest die gängigsten Zahlendatentypen, die sich in einen String umwandeln (und auch wieder zurückkonvertieren) lassen abspeichern. Offensichtlich braucht man sich dabei nicht mal um das Öffnen und Schließen der entsprechenden Datei zu kümmern.
-
Eigentlich kann man in einer XML ablegen, was man lustig ist, man muss sich nur an die Tag-Syntax halten. Man muss die XML auch nicht mit einem Parser lesen bzw. schreiben, ist aber natürlich zu empfehlen.
Tester2
-
Ach ja, wenn du wirklich die Registry beschreiben/ lesen willst, guck doch mal nach den Methoden:
RegOpenKeyEx(HKEY_LOCAL_MACHINE,...) RegQueryValueEx(...) RegCloseKey(...)
damit habe ich gute Erfahrungen gemacht.
Tester2
-
Danke @Tester2,
die Zugriffsroutinen für die Registry hab ich schon implementiert und die funktionieren auch. Mit XML will ich mich irgendwann befassen, ohne jetzt schon zu wissen was mich erwartet. Bin auf dem Gebiet Neuling. Kannst Du da irgendwelche Tutorials empfehlen?
-
Nein, kann leider nichts Vernünftiges empfehlen. Hab meine Kenntnisse auch nur durchs Googeln, Codeproject.com, Erfahrung von Kollegen etc.
Tester2
-
Hallo, du könntest auch ein paar nette Funktionen der Klasse CWinApp nutzen.
CWinApp *pApp = AfxGetApp(); pApp->WriteProfileString("SECTION_ONE", "IDENTIFIER", "Mein Text"); CString Text = pApp->GetProfileString("SECTION_ONE", "IDENTIFIER", "ALT_Text wenn kein Eintrag vorhanden ist");
Es gibt da
- WriteProfileString,
- WriteProfileInt,
- WriteProfileBinary,
- GetProfileString,
- GetProfileInt,
- GetProfileBinary.
Diese Daten laufen einfach in die INI deines Programmes.
Diese Datei heißt %WINDIR%\PROGRAMMNAME.ini.Wenn du davor eine Variable deiner CWinApp änderst (ich bin mir leider nicht mehr sicher welche - aber das müsste in der MSDN bei der Beschreibung der oben genannten Funktionen stehen), dann schreiben diese Funktionen einfach in die Registry!
So einfach ist das.
-
Vielen Dank erst mal. Sollte man da aber nicht WritePrivateProfileString() benutzen? Da kann man den Dateinamen incl. Pfad angeben. Das man String und Int schreiben kann habe ich auch schon rausgefunden. Neu war mir das mit dem Binary. Gibt es allerdings auch eine vorgefertigte Funktion für Fließkommazahlen (float oder double) oder muss man die immer in einen String umwandeln und als String in die Ini schreiben bzw. wieder zurückkonvertieren?