CXI-Basis-Programmierreferenz / Version 2 / Tools / INI-Dateien /
char * cxiReadIniFileString (const char *fname, const char *sname, const char *vname, char *buffer, unsigned int buflen)
fname:
Name der INI-Datei
sname:
Name des Abschnitts ohne Klammern
vname:
Name der Variablen
buffer:
Puffer für den Wert der Variablen
buflen:
Maximale Länge des Puffers für den Wert (einschließlich Nullbyte)
return:
0 ok, sonst Fehler
Diese Funktion liest eine Variable aus einer INI-Datei, ohne dafür ein CxiTree-Objekt anlegen zu müssen.
Um andere Variablentypen als Strings auszulesen, lesen Sie die Datei zunächst mittels CxiTree-Konstruktor oder SetFromStringOrFile ein und verwenden anschließend die Variable aus dem CxiTree-Objekt.
Im Fehlerfall wird der Pufferinhalt nicht verändert.
Um die Existenz eines Abschnitts zu prüfen, ist vname=NULL zu setzen. Der Rückgabewert gibt dann Folgendes an:
2923 (cxiErrorSetFromFileLabelNotFound): Datei ok, Abschnitt nicht gefunden
2924 (cxiErrorSetFromFileNoDataFound): Datei ok, Abschnitt vorhanden, aber leer
0 (cxiNoError): Datei ok, Abschnitt vorhanden, nicht leer
sonst: Dateifehler
Anmerkungen zum Inhalt der INI-Datei:
Variablenwerte in der INI-Datei können in einfache (') oder doppelte (") Anführungszeichen eingeschlossen werden, diese Anführungszeichen werden nicht als Teil des Wertes aufgefasst und somit nicht in den Zielpuffer kopiert. Innerhalb des Wertes kann das jeweils andere Anführungszeichen frei verwendet werden.
Enthält der Wert eines INI-Eintrags Leer- oder Sonderzeichen, so MUSS er in Anführungszeichen gesetzt werden, damit er von dieser Funktion korrekt eingelesen werden kann, z.B.
MESSAGE = "Es ist ein Fehler aufgetreten!"
NOCOMMENT = "a;b//c"
Es ist nicht notwendig, Zahlenwerte oder Schlüsselworte in Anführungszeichen einzuschließen, z.B.
MAXCOUNT = 19
SHOWCOUNT = TRUE
Abschnittsüberschriften müssen in eckige Klammern eingeschlossen werden und ohne Einrückung direkt am Zeilenanfang stehen.
Variablen innerhalb eines Abschnitts können eingerückt werden.
Die Namen von Variablen unterliegen den gleichen Einschränkungen wie die Namen von CXI-Variablen. Insbesondere wird die Groß- und Kleinschreibung nicht bei der Suche berücksichtigt.
Portabilität:
Diese Funktion ist ab Version 2.11 in allen unterstützten Systemen verfügbar. Einige spätere Unterreleases der Version 2.10 für OS/2 und Win16 enthalten diese Funktion bereits.
Siehe auch:
WriteIniFileString - Schreiben eines Eintrags (String)
UpdateIniFile - Schreiben eines Eintrags (allgemein)
Beispiel 1:
Auslesen der Variablen "welt" aus dem Abschnitt [hallo]
in der Datei "otto.ini" im aktuellen Verzeichnis:
#include "cxib.h"
char buffer [1000];
strcpy (buffer, "<default>"); // Vorbesetzen für den Fehlerfall
CxiError rc = cxiReadIniFileString
("otto.ini", "hallo", "welt", buffer, sizeof buffer);
if (rc != cxiNoError) { ...Fehlerbehandlung... }
Beispiel 2:
Prüfen, ob der Abschnitt [hallo] in der Datei "otto.ini"
im aktuellen Verzeichnis vorhanden ist:
#include "cxib.h"
CxiError rc = cxiReadIniFileString ("otto.ini", "hallo", 0, 0, 0);
if (rc == cxiNoError || rc == cxiErrorSetFromFileNoDataFound)
{ ... Abschnitt vorhanden ... }
else if (rc == cxiErrorSetFromFileLabelNotFound)
{ ... Abschnitt nicht vorhanden ... }
else
{ ... Problem mit der Datei ... }