Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Werte nachhaltig speichern

  1. #1
    keinWort
    Gast

    Werte nachhaltig speichern

    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

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von keinWort
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    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):

    Code:
    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?

  4. #4
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    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...71&postcount=4

    Damit kann man Datein in dem Format speichern/laden:
    Code:
    # 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).

    Ein anderer hat das hier gelinkt:
    http://www.boost.org/doc/html/program_options.html
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •