Speichern von Paramtern und Einstellungen
-
Hallo,
ich bin dabei ein kleines Projekt zu realisieren und muss hierfür Parameter zwischenspeichern, damit sie auch beim nächsten Start wieder vorhanden sind.
Die Speicherung in der Registry kommt nicht in Frage, da es portalebl sein muss. Es sollte also eine Datei sein.
Nach Suche in Google und in Foren bin ich bei dieser Libary hängen geblieben:
http://rudeserver.com/config/index.htmlLeider jedoch funktioniert sie nicht bei mir. Immer wenn ich die ini Datei laden will kommt eine Zugriffsverletzung.
Kennt jemand andere Möglichkeiten Informationen zu Speicher? Es sollte recht einfach sein, da ich leider aktuell noch recht neu in C++ bin.
Als Entwicklungsumgebung habe ich Windows mit C++ Builder 2009.
Hat wer Hinweise?
-
Was spricht dagegen sie in eine normale Textdatei zu speichern?
Wichtig wäre vielleicht noch, in welchem Format liegen dir deine Parameter oder Informationen zur Laufzeit vor?Wie sehen die Informationen aus?
-
Unter Windows gibt's ja auch ini-Dateien. Wenn du eine ini schreiben/lesen willst, musst du Funktionen wie WritePrivateProfileInt usw. benutzen.
-
Die Daten liegen während dem Programm in allen möglichen Variablen vor.
Es sind Integer, Strings und Float Zahlen.Wie ich sie Ablege usw. ist im prinzip mir überlassen. Ich würde es jedoch gerne so einfach wie möglich gestalten.
Gegen eine Textdatei Spricht auch nichts, ich würde jedoch nur gerne gezielt über ein Symbol darauf zugreifen können. Ähnlich wie es bei *.ini files realisiert ist.
So kann ich es ein bisschen "gliedern" usw.
-
Und wieso nimmst du dann nicht XML was genau dafür entwickelt wurde? Um Daten zu speichern.
Kommt jetzt natürlich noch drauf an mit was dzu programmierst, bei Nativ-C++ musst du dir entweder nen eigenen Parser dazu bauen oder eine vorhande Bibliothek nehmen (zB von Boost die serialization).
Bei C++/CLI gibts direkt einen von Microsoft dazu.
Edit:
Hier noch ein Beispiel dazu, 2 Files:
http://www.boost.org/doc/libs/1_38_0/libs/serialization/example/demo_gps.hpp
http://www.boost.org/doc/libs/1_38_0/libs/serialization/example/demo_xml.cppUnd eine XML-Datei als Beispiel:
http://www.boost.org/doc/libs/1_38_0/libs/serialization/example/demo_save.xmlMfg Marco
-
Ich würd in dem Fall auch auf eine .ini zugreifen (hat gegenüber XML den Vorteil dass die Synatx deutlich einfacher ist und daher beim manuellen editieren weniger Fehler passieren).
Im Programm würd ich dann eine IniService Klasse dafür zuständig machen, die Daten bei Programmstart einzulesen und danach für jedes einstellbare Attribut den entsprechenden eingestellten Wert oder Defaultwert zurückzugeben.
-
MaRlik schrieb:
Hallo,
Die Speicherung in der Registry kommt nicht in Frage, da es portalebl sein muss. Es sollte also eine Datei sein.Es sollte recht einfach sein, da ich leider aktuell noch recht neu in C++ bin.
Warum nicht einfach mit den streams arbeiten?
#include <fstream> #include <string> #include <iostream> using namespace std; int a; string b; double c; void speichern() { ofstream schreiben; schreiben.open("save.txt", ios::out); schreiben<<a<<endl<<b<<endl<<c; schreiben.close(); } void laden() { ifstream lesen; lesen.open("save.txt", ios::in); lesen>>a>>b>>c; lesen.close(); } int main() { a=4; b="hallo"; c=3.21; speichern(); laden(); }
In dem Fall wären die Variabeln dann global.
-
Ich selbst hasse immer Leute die nix schreiben wie sie es gelöst haben, daher hier mein Nachtrag.
Ich habe es via eine *.ini File realisiert. Im C++ Builder gibt es eine Klasse, mit der sehr leicht und bequem eingelesen und gespeichert werden kann.
In der Headerfile IniFiles.hpp ist alles zu finden.Gruß,
MaRlik