Ich habe die Implementation jetzt noch nicht gelesen, aber ich verstehe nicht, was denn nun eine
TIniSection
und was ein
TIniObject
ist. Eine Sektion scheint einen änderbaren Titel und String-String-Paare zu besitzen. Ein
TIniObject
scheint nun beliebig viele dieser Sektionen sowie beliebig viele Titel (?) zu beinhalten. Wenn ich es richtig verstehe wäre doch "TIniFile" ein passenderer Name, oder?
Vorausgesetzt ich liege nicht meilenweit daneben, verstehe ich eins noch nicht: Wo ist nun der Unterschied von TIniObject zum in Delphi bereits vorhandenen TIniFile?
Kannst du mal den Vorteil gegenüber einer TMemIniFile erörtern? Denn für mich sieht das nach einem flüchtigen Blick genau danach aus.
Ihr habt natürlich recht, dass es schon dutzende Varianten gibt eine INI-Datei zu laden und zu speichern, jedoch ist mein Ziel eine schlanke
Unit für verschiedene Konfigurationsdaten (
XML, JSON usw [auch für Custom-Configs]) zu erstellen. Ich denke mal Vorteile wird meine
Unit bisher noch keine haben (ausser dass sie schlank ist?
) aber wie gesagt, vielleicht mags der eine oder andere brauchen und wenn nicht, dann halt nicht
Ausserdem ist es doch meistens ziemlich entspannend nach mehreren Stunden krampfen in einem etwas grösserem Projekt eine kleine, simple aber funktionstüchtige
Unit zu schreiben.
Füg' doch noch die Methode
LoadFromStream()
und
SaveToStream()
hinzu.
Denn ein File ist ja nur die Spezialisierung eines Streams; und wer weiß vielleicht willst du die Konfiguration ja mal von einem Webserver auslesen.
Natürlich rufen die Methoden LoadFromFile() und SaveToFile() ihre allgemeineren Streamvarianten auf und übergeben ein FileStream-Objekt.
Delphi-Quellcode:
procedure TIniObject.Parse(AStringList: TStringList); // falsch: TStringList ist zu spezifisch
procedure TIniObject.Parse(AStringList: TStrings); // richtig: TStrings bietet dem Aufrufer alle Möglichkeiten
Danke für die Tipps, werde ich beachten und einbauen wenn es die Zeit erlaubt
Zufälligerweise hatte ich schon ein Problem mit der StringList
Habe auch noch etwas kleines aber doofes bemerkt:
Erstmal ein schneller Crashkurs:
TIniObject beinhaltet die ganze IniDatei mit allen Sektionen.
TIniSection ist eine Sektion bei der, der Titel immer mit eckigen Klammern umgeben sind und dessen Eigenschaften unten aufgeführt sind.
Es gibt folgende Wege eine Eigenschaft auszulesen:
Delphi-Quellcode:
IniObject[Sektion][Eigenschaftsvariable] : Eigenschaftswert als String
IniObject.Value[Sektion, Eigenschaftsvariable] : Eigenschaftswert als String
Ich denke mal die
Value variante wird raus genommen, da sie eigentlich unnötig ist. ^^
Freundliche Grüsse