Speichern der Settings
-
ini reicht (fast) vollkommen aus. Alles andere ist nur unnötig kompliziert.
Oder: Ich sichere alles in ini (oder sehr ähnlichem Format) ab.
-
giowck schrieb:
Code4Fun_loggedout schrieb:
Hi Leute,
ich wollte mal fragen wie ihr eure Settings abspeichert. Zurzeit habe ich dies noch in einem ini File. Welche alternativen wuerde es geben? XML haette ich mir zB. schon mal angeschaut aber ich find leider keine gute und kleine library fuer C. Hier im Forum gibts auch nen Link zu einer Seite wo verschriedene libraries vergliechen werden, da sind aber leider nur 2 dabei fuer C.
Greetz C0de
Also wenn du eine OS abhängige methode suchst
Windows: Windows Registry
Mac: .plist in ~/Library/Preferences
Linux: ~/.config textdateiSonst, eigenen Parser für Textdateien schreiben wenn XML zu mächtig ist...
Arbeite unter Windows und eigentlich ist es egal ob ich OS abhaengig bin. Aber mit der Registry is au schlecht find ich. Ich moechte meine Setttings eigentlich in meiner exe als Resourcen haben da sie eig nicht mehr geaendert werden muessen sobald sind einmal fest stehen.
Und mit dem ini File. Auf der einen Seite bin ich damit schon zufriedne aber ka weiss au ned auf der andren Seite au wieder ned weiss au ned genau warum
Grretz
-
Schreiben: http://msdn.microsoft.com/en-us/library/ms725501(v=vs.85).aspx
Lesen: http://msdn.microsoft.com/en-us/library/ms724366(v=vs.85).aspx bzw. http://msdn.microsoft.com/en-us/library/ms724353(v=vs.85).aspx
-
theta schrieb:
Schreiben: http://msdn.microsoft.com/en-us/library/ms725501(v=vs.85).aspx
Lesen: http://msdn.microsoft.com/en-us/library/ms724366(v=vs.85).aspx bzw. http://msdn.microsoft.com/en-us/library/ms724353(v=vs.85).aspxHmm sorry wenn ich mich unklar ausgedrueckt haber, aber aktuell speichere ich meine Einstellungen schon in einem ini File. Bin mit dem aber nicht zufrieden (wie gesagt weiss au ned genau warum) und jetzt wollte ich nach alternativen fragen.
Also das lesen bzw schreib fuer dieses Format ist nicht das Problem
Gruesse
-
Unter Windows einfach die Registry verwenden. Configdateien die neben der .exe rumliegen sind vor allem auf neueren Windowsversionen problematisch (erfordern Schreibrechte im Programmverzeichnis).
-
dot schrieb:
Unter Windows einfach die Registry verwenden. Configdateien die neben der .exe rumliegen sind vor allem auf neueren Windowsversionen problematisch (erfordern Schreibrechte im Programmverzeichnis).
Wenn man sich an die Regeln für Konfig Files von MS hält ist es kein Problem. Es gibt auch noch User Verzeichnisse...
-
theta schrieb:
Wenn man sich an die Regeln für Konfig Files von MS hält ist es kein Problem. Es gibt auch noch User Verzeichnisse...
Dann ist der Vorteil von wegen liegt neben der exe und so aber genauso verschwunden, also kann man auch gleich die Registry verwenden die von Anfang an für genau sowas gedacht ist...
-
Code4Fun_loggedout schrieb:
(wie gesagt weiss au ned genau warum)
Das musst du schon ein wenig genauer erklären. Ich habe mal ein paar Funktionen geschrieben, mit denen du beliebige Verschachtelungen von
std::vector<TYPE>
und std::map<wxString, TYPE> speichern und laden kannst, wobei TYPE ein Element der folgenden Dinge sein kann:
double
wxString
std::vector<TYPE>
std::map<wxString, TYPE>Es wäre also theoretisch denkbar, den Typ std::map<wxString, std::vector<std::map<wxString, std::vector<double> > > > abzuspeichern und beim Programmstart wieder einzulesen.
std::map<wxString, wxString> wäre für deine Zwecke zum Beispiel geeignet. Du kannst wahrscheinlich mit relativ wenig Aufwand die Typen auf std::string und int abändern. Ich habe das persönlich noch nicht benutzt, weil ich es noch nicht gebraucht habe, wenn du es brauchst, kann ich dir den Code gerne hochladen.
-
Code4Fun_loggedout schrieb:
Aber mit der Registry is au schlecht find ich.
Hast recht, ist Schrott.
Code4Fun_loggedout schrieb:
Ich moechte meine Setttings eigentlich in meiner exe als Resourcen haben da sie eig nicht mehr geaendert werden muessen sobald sind einmal fest stehen.
Und warum machst du das denn nicht einfach? String-Table bietet sich an.
-
Was sind denn das für "Settings" die schon beim kompilieren fest stehen? Was spricht gegen #define oder sowas?
-
Du brauchst doch eh vernünftige Defaultwerte im Programm (wenn die .ini nicht da ist). Und falls sich doch mal was ändern soll, musst du die .ini nehmen.
-
cooky451 schrieb:
Was sind denn das für "Settings" die schon beim kompilieren fest stehen? Was spricht gegen #define oder sowas?
Hmm joa also ich hab ein Dummy Programm mit der logik und ein Builder in dem man die Settings eingibt. Und danch wird das "richtige" Programm erstellt. Also ein einfacher Builder halt. Und bevor ich fuer jeden String nen Dummy Wert nemm, das File oeffne und nach den Strings such und dann ersetzt, wollte ich halt ein bereits vorhandenes Format nehmen und in den Resourcen speichern. Und falls echt mal was geaendert werden soll. Einfach: UpdateResource verwenden.
Zusammengefasst kann man sagen: ini, xml oder selber was basteln steht zur verfuegung!?
Dann bleib ich wohl bei dem ini Format
Greetz