Almetare
1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
|
Klasse zum Einlesen/Schreiben von Windows-Ini-Dateien. Mehr ...
#include <confg.h>
Öffentliche Typen | |
enum | Err { OK = 0, FILE_NOT_FOUND, SECTION_NOT_FOUND, PAR_NOT_FOUND, NO_FURTHER_PAR } |
Öffentliche Methoden | |
Config (const string &fileName, Err &err) | |
Err | init (const string &fileName) |
Initialisierungsfunktion wird von allen Konstruktoren aufgerufen. Mehr ... | |
Err | getErr () const |
string | errToStr () const |
Wandelt Error-Code in String um. Mehr ... | |
Err | seekSection (const string §ion) |
Sucht von Beginn der Konfigurationsdatei an nach Sektion sectionName. Mehr ... | |
Err | readParameter (const string &par, string &val, const string §ion="", bool isStripSpc=true) |
Liest den Parameter parName ein und gibt den Wert in value zurueck. Mehr ... | |
Err | nextParameter (string &par, string &val) |
Holt naechsten Parameter ab der aktuellen Zeile. Mehr ... | |
Err | writeParameter (const string &par, const string &val, const string §ion="") |
Weist dem Parameter setPar in der Sektion setSection den Wert setVal zu. Mehr ... | |
Err | flush () |
Schreibt die Konfigurationsdatei neu auf Platte. Mehr ... | |
void | remove () |
Private Methoden | |
void | splitLine (string line, string &space, string §ionName, string &parName, string &assignOp, string &value, string &comment) |
Trennt eine Konfigurationszeile in ihre Bestandteile auf. Mehr ... | |
void | readFile () |
Liest die ganze Konfigurationsdatei in das String-Array mLines ein. | |
Err | setParameter (const string &setPar, const string &setVal, unsigned int &i) |
Beschreibt den Parameter setPar mit Wert setVal. Mehr ... | |
Private Attribute | |
char | mCs |
Kommentarsymbol. | |
string | mAssigns |
Liste von Zuweisungszeichen. | |
string | mCsAndEol |
String mit Kommentar und EOL-Symbol. | |
string | mFileName |
Name der Konfigurationsdatei. | |
string | mSection |
Name der Sektion. | |
string | mParName |
Name des Parameters. | |
fstream | mFile |
zu oeffnende Konfigurationsdatei | |
bool | mIsFileRead |
Flag, ob Datei schon gelesen. | |
Err | mErr |
Fehlercode. | |
vector< string > | mLines |
gepufferte Datei | |
Klasse zum Einlesen/Schreiben von Windows-Ini-Dateien.
Die Klasse Config dient zum Lesen und zerstoerungsfreien Schreiben von Initialisierungsdateien, wie sie frueher unter Windows ueblich waren. Zerstoerungsfrei bedeutet dabei, dass die Formatierung der Datei auch beim Schreiben von Parameteren (z.B. Kommentare am Zeilenende) erhalten bleibt.
Eine Initialisierungsdatei gliedert sich in Sektionen, in denen die Parameter aufgelistet sind; Kommentare sind am Zeilenende erlaubt. Beispiel:
Der Sektionsname muss in eckigen Klammern oberhalb der zugehoerigen Parameter stehen. Leerzeichen und Tabs am Zeilenanfang werden ignoriert.
Trennzeichen zwischen Parameternamen und Parametern koennen in der Klassenvariablen mAssigns
definiert werden (z.Zt. Tab, Space und "="). Das Kommentarsymbol wird in mCsAndEol
definiert (z.Zt. "#"). Die Werte der Parameter sind grundsaetzlich Strings und muessen ggf. vom Code, der die Klasse verwendet, in andere Typen umgewandelt werden.
string Config::errToStr | ( | ) | const |
Wandelt Error-Code in String um.
Config::Err Config::flush | ( | ) |
Schreibt die Konfigurationsdatei neu auf Platte.
Config::Err Config::init | ( | const string & | fileName | ) |
Initialisierungsfunktion wird von allen Konstruktoren aufgerufen.
fileName | Name der Initialisierungsdatei |
Config::Err Config::nextParameter | ( | string & | parName, |
string & | value | ||
) |
Holt naechsten Parameter ab der aktuellen Zeile.
parName | Parametername der naechsten Zeile |
value | zugehoeriger Parameterwert |
Config::Err Config::readParameter | ( | const string & | par, |
string & | val, | ||
const string & | section = "" , |
||
bool | isStripSpc = true |
||
) |
Liest den Parameter parName ein und gibt den Wert in value zurueck.
Wenn section = "", wird ab der aktuellen Zeile gesucht, sonst wird zunaechst die Section ab Dateianfang gesucht.
par | der zu lesende Parameter |
section | Name der Sektion, in dem der Parameter gesucht wird |
val | der Wert des Parameters (grundsaetzlich ein String) |
isStripSpc | wenn true, werden endstaendige Leerzeichen des Parameters entfernt |
Config::Err Config::seekSection | ( | const string & | sectionName | ) |
Sucht von Beginn der Konfigurationsdatei an nach Sektion sectionName.
Der Filepointer wird dann an diese Stelle gesetzt.
sectionName | Name der zu suchenden Sektion |
|
private |
Beschreibt den Parameter setPar mit Wert setVal.
Es wird davon ausgegangen, dass i bereits eine Zeile in der passenden Sektion ist und dann zeilenweise nach dem Parameter gesucht.
setPar | zu schreibender Parameter |
setVal | zu schreibender Wert |
i | Nummer der Zeile, in der der Parameter steht |
|
private |
Trennt eine Konfigurationszeile in ihre Bestandteile auf.
line | zu trennende Zeile |
space | alle Zeichen vor dem Parameter |
sectionName | Sektionsname (falls die Zeile einen solchen enthaelt), ohne die eckigen Klammern |
parName | Parametername, von seinem ersten bis zum letzten Buchstaben |
assignOp | Zuweisungsoperator, alle Zeichen zwischen dem letzten Buchstaben des Parameters und dem ersten Buchstaben des Wertes |
value | Wert des Parameters, Zeichen ab dem ersten Nicht-Space-Zeichen nach dem Zuweisungsoperator bis zum Zeilenende bzw. Kommentarzeichen |
comment | Kommentar, alle Zeichen ab dem Kommentarsymbol bis zum Ende der Zeile |
Hier ein Beispiel (die "^" zeigen jeweils auf das erste und letzte Zeichen des Bestandteils):
Config::Err Config::writeParameter | ( | const string & | setPar, |
const string & | setVal, | ||
const string & | setSection = "" |
||
) |
Weist dem Parameter setPar in der Sektion setSection den Wert setVal zu.
Sonst wird an der Datei nichts veraendert, Kommentare etc. bleiben erhalten. Ausnahme: Wenn der Platz zwischen Parametername und Kommentar nicht reicht, wird der Kommentar nach rechts verschoben.
Beim ersten Aufruf wird die ganze Datei in mLines[] eingelesen, weitere Aufrufe arbeiten dann auf diesem Puffer. Er wird im Destruktor oder mit flush() dann wieder geschrieben.
Wenn setSection = "", wird ab der aktuellen Zeilenposition direkt nach dem Parameter gesucht.
setPar | Name des zu schreibenden Parameters |
setVal | Wert des zu schreibenden Parameters |
setSection | Sektion, in der der zu schreibende Parameter steht |