Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#22

AW: INI File Schreiben und auslesen

  Alt 14. Mär 2014, 12:32
@floppybe

Nochmal zum Aufbau einer Ini-Datei
Code:
[Sektion1]
Itent1=Value1
Ident2=Value2
Ident3=Value3

[Sektion2]
Itent1=Value1
Ident2=Value2
Ident3=Value3

[SektionN]
Itent1=Value1
Ident2=Value2
Ident3=Value3
Wie du siehst ist die Ini in Sektionen unterteilt. Dadurch ist es möglich drei Mal den Ident mit dem gleichen Namen "Ident1" zu verwenden, ohne dass es zu Komplikationen kommt. Ohne Sektionen müsste man für jeden Ident einen anderen Namen nehmen.

Nun keine Gesetze, aber Regeln die das Leben erleichtern:

Es empfiehlt sich die Namen für Sektionen und Idents als Konstanten global zu nutzen. Grund: man kann sich immer leicht verschreiben. Ohne Konstanten fällt der Fehler nicht auf IniFile.ReadInteger('Sprachen', 'AktueleSprache', 0); . Hier fällt dem Compiler nicht auf, dass in 'AktueleSprache' ein L fehlt. Wenn man bei IniFile.ReadInteger(IniLangSection, IniCurrLang, 0); ein Fehler macht, fällt es auf, dass "IniCurrLang" mit zwei R geschrieben wurde, denn IniCurLang ist eine Konstante.

Das Gleiche gilt für den IniPfad. Wer den Pfad immer wieder aufs neue zusammensetzt, dem unterläuft garantiert irgendwann ein Fehler. Am besten den Namen übe reine Funktion holen.

Nun zu deiner Frage:
Code:
Ich habe nochmals gelesen im TUT, Edit1.Text:=Ini.ReadString('Section', 'Schlüssel1', 'kein Wert'); "Kein Wert" ist ja ein direkter Eintrag und nicht der Wert aus der INI oder verstehe ich das Falsch ?
'kein Wert' ist ein Defaultwert bei Read Methoden und kommt immer dann zum Einsatz wenn ein Fehler vorliegt. Ein Fehler kann immer dann vorliegen, wenn es z. B. keinen Eintrag gibt. Entweder fehlt die Sektion oder Ident, so dass an der Stelle keine Information vorliegt. Statt aber mit einer Fehlermeldung abzubrechen, wird ersatzweise der Defautwert genommen, in dem Fall 'kein Wert'. Ein weitere Grund für einen Fehler kann sein, dass zwar alles da ist, also Sektion und Ident, aber man einen Integer laden will und die Funktion erkennt, dass in der Ini als Wert ein String vorliegt (Selbst wenn es "1.0" ist).

Der Defaultwert ist also der Ersatz-Wert im Fall, dass ein Fehler vorkommt und der Wert nicht korrekt gelesen werden kann.
  Mit Zitat antworten Zitat