Einzelnen Beitrag anzeigen

Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
508 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: UniversalConfigUnit

  Alt 18. Mär 2015, 16:23
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
Milos
  Mit Zitat antworten Zitat