Archiv verlassen und diese Seite im Standarddesign anzeigen : Werte nachhaltig speichern
keinWort
14-09-2005, 10:08
Hallo,
auf die Gefahr hin das ich nerve, habe ich noch ne Frage.
Mein Watchdog-Programm (CMD) hat drei Parameter, die ich gerne speichern würde, so dass sie, wenn Sie geändert wurden, nach einem Neustart wieder zur Verfügung stehen. Ich dachte da an eine kleine Konfigurationsdatei, komme aber damit nicht klar.
Eine Datei speicher nur char, richtig?
Wie kann ich dann meine Werte (int) in einer Datei sinnvoll Speichern?
Gibt es für sowas keine fertige Lösung? Man muss das Rad ja nicht neu erfinden.
Danke schon mal an alle wissenden.
Christian
anda_skoa
14-09-2005, 10:31
Eine Datei speicher nur char, richtig?
Eine Datei ist ein Datenblock auf einem Langzeitspeicher, bzw aus Sicht von C oder C++ einfach eine Datenquelle/Datensenke.
Da kannst du alles reinschreiben, was du auch im Speicher halten kannst.
Für Konfigurationationswerte ist es natürlich sinnvoller, Text als Basisdatentyp zu verwenden.
Wie kann ich dann meine Werte (int) in einer Datei sinnvoll Speichern?
zB ein Wert pro Zeile, oder Paare mit Schlüssel=Wert (INI Style Config)
Gibt es für sowas keine fertige Lösung? Man muss das Rad ja nicht neu erfinden.
Jede Menge, für praktisch jede Art von Config-Format.
Wenn du nur drei Werte speichern willst, dürfte aber eine Config-Library bischen overkill sein :)
Ciao,
_
Du kannst sie auch binär speichern, indem du die Daten in einer Struktur speicherst und die Struktur einfach in eine Datei schreibst. Also sowas wie (Achtung! Pseudo-Code, keine Garantie auf 100% Korrektheit):
typedef struct blubblbla
{
int val1,
char val2,
bool val3
};
main()
{
struct blubblbla sBlubb;
sBlubb.val1 = 50;
sBlubb.val2 = 'x';
sBlubb.val3 = true;
int i_WFD = open("/etc/blubb.conf", O_WRONLY);
write(iFD,&sBlubb,sizeof(struct blubblbla));
close(iFD);
int i_RFD = open("/etc/blubb.conf", O_RDONLY);
read(i_RFD,&sBlubb,sizeof(struct blubblbla));
close(iFD);
return 0;
}
Allet klar? :)
Binärdatein find ich nicht gut. Find's gut wenn man Datein mit einen Texteditor einfach lesen/schreiben kann.
Zu quasi dem Thema gibt's schon nen thread:
http://www.mrunix.de/forums/showthread.php?t=39224
Und da habe ich auch schon meine kleine C-API um configs zu speichern gepostet:
http://www.mrunix.de/forums/showpost.php?p=176671&postcount=4
Damit kann man Datein in dem Format speichern/laden:
# comment...
global_key1="value"
global_key2="value"
[group1]
key1="value"
key2="value"
[group2]
# comment
key1="value"
key2="value"
# comment
key3="value"
# comment
Wie man sowas einliest und schreibt hab ich mit einem beispiel (config/example.c) erklärt.
Die werte sind aber alle string (char*). Di muss't noch selber in z.B. int umwandeln (sscanf(string, "%d", &i); siehe: man sscanf (http://unixhelp.ed.ac.uk/CGI/man-cgi?sscanf)).
Ein anderer hat das hier gelinkt:
http://www.boost.org/doc/html/program_options.html
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.