ini-ersatz??
-
naja...ich suche halt nach einer passenden technik...
-
Dein Configfile kannst Du ja unter /etc/ speichern, wo fast alle sind.
Dann das file oeffnen und die Einstellungen auslesen, mehr ist das nicht. Ne einfache Sache....Ivo
-
moes schrieb:
naja...ich suche halt nach einer passenden technik...
und wo ist das Problem mit der INI Datei? Das genügt in den meisten Fällen und es gibt viele INI-Parsebibliotheken. wozu das Rad neu erfinden?
-
hm...wenn dann würde ich das schon gerne ohne eine lib oder einen parser machen. mein programm sollte so unabhängig wie möglich sein.
ich suche einfach nur nach einer möglichkeit...am liebsten wären mir ein paar codeschnipsel, beispiele.
-
Wenn dein configfile etwa so aussieht:
einstellung = wert
Dann lese doch die ersten beiden Zeichenketten ein und speicher die dritte in einer Variable. Mit C++ lese ich die Werte als string ein, die ersten beiden landen in einer tmp Variable und die dritte als Wert...
Ein Beispiel...
string logFile; while(dat_ein) { string puffer; dat_ein >> puffer; if(puffer == "LogFile") {string tmp; dat_ein >> tmp; dat_ein >> logFile;} }
Ivo
-
Auf der Lua-Seite gibt es ein paar Tutorials, wie man Lua als ConfigReader direkt in seinem Programm einsetzt. Die Bibliothek ist klein und kann statisch gelinkt werden.
-
Ich würde das auf alle Fälle auch über eine darauf spezialisierte Library lösen; selbst parsen ist bei sowas meistens ziemlich schlecht. Such am besten mal auf freshmeat oä.
-
Warum ist selbst parsen schlecht? Wenn die ini nicht allzu gross und alles sauber definiert ist, sollte es doch kein Problem sein... Oder uebersehe ich da was?
Ivo
-
Ivo schrieb:
Warum ist selbst parsen schlecht? Wenn die ini nicht allzu gross und alles sauber definiert ist, sollte es doch kein Problem sein... Oder uebersehe ich da was?
Ivo
parsen ist nicht trivial und man darf nicht davon ausgehen, dass die ini keine Fehler enthält. Das bläht den Code unnötig auf. Wozu das Rad neu erfinden, wenn es genug kleine Bibliotheken gibt, die das 100% besser können als du? Das ist der Sinn einer Bibliothek.
-
http://pastebin.ca/1342843
http://pastebin.ca/1342844
http://pastebin.ca/1342845
http://pastebin.ca/1342846eine kleine implementierung um konfigurationsdateien zu lesen. die namen der dateien stehen in der titelleiste.
das format ist:
[header1]
direktive1 = wert1[header2]
direktive2 = wert2
direktive3 = wert3der code ist allerdings schon älter. also bitte davor ein paar tests machen, ob er noch funktioniert. ich übernehme keine garantie für irgendwas.
lizenz is public domain.