Defaultwerte bei TIniFile ReadString
-
laut Borland Hilfe gilt folgendes Verhalten für die Methode ini->ReadString() in TIniFiles:
Der Wert Default gibt vor, welcher String in folgenden Situationen zurückgeliefert werden soll:
Der Abschnitt ist nicht vorhanden.
Der Schlüssel existiert nicht.
Dem Schlüssel ist kein Datenwert zugeordnet.Es klappt allerdings nur, wenn der Abschnitt oder der Schlüssel nicht existiert, wenn dem Schlüssel kein Wert zugeordnet ist, bekomme ich nur ein leeres Ansistring Obj. zurückgeliefert. Der dafür vorgesehene Defaultwert wird einfach ignoriert.
Kennt jemand vielleicht eine Erklärung für dieses Verhalten, oder besser noch, hat jemand eine Idee, wie man es umgehen kann? Ich find es ziemlich überflüssig, jeden eingelesenen String noch darauf zu überprüfen, ob er evtl. leer ist.Bei ini->ReadInteger() tritt dieses Problem nicht auf.
-
tja, wenn der Abschnitt und der Schlüssel existieren, da aber nix drin steht, dann ist das doch ein leerer String. So gesehen bin ich mir nicht sicher, ob's ein Fehler ist.

Abhilfe ist da schwierig. Auf die eine oder andere Art ist eine Überprüfung, ob der String leer ist wohl nötig. Beim Einlesen, oder beim Schreiben der INI. Vielleicht ist am sinnvollsten in einer Schleife durch alle Abschnitte und Schlüssel zu iterieren und alle leeren Schlüssel löschen. So muß man zumindest nicht jeden einzelne Variable beim Lesen oder Schreiben prüfen...
Grüße Joe_M.
-
Das macht Sinn,
die Borland Hilfe ist in dem Punkt wohl etwas irreführend.Das mit der Schleife ist in dieser Richtung wahrscheinlich die einfachste Lösung, danach greifen die Defaultwerte ja auf jeden Fall.