Hallo miteinander,
ich habe ein paar allgemeine Fragen zur Vorgehensweise beim Laden und Speichern von Programmeinstellungen. Die Thematik scheint simpel, doch ich zerbreche mir schon eine ganze Weile den Kopf darüber und hoffe nun frischen Input zu erhalten
.
Bisherige Vorgehensweise
Zur Zeit speichere ich meine Daten auf 3 verschiedene Art und Weisen:
- INI-Dateien | Recht selten geworden, aber es soll dem Benutzer möglich sein manche Einstellungen selbst zu ändern, welche nicht unbedingt über Dialoge im Programm zu ändern sind.
- XML-Dateien | Komplexere Speicherstrukturen, welche nicht vom Benutzer geändert werden sollen. Es soll jedoch trotzdem möglich sein mal etwas "nachzuschauen".
- SQLite-Dateien | Alle sonstigen "unwichtigen" Einstellungen, die man in der Oberfläche verändern kann (Farbeinstellungen, usw). Außerdem verschiedene Texte usw.
Von jedem Dateityp gibt es mehrere Dateien. Jede Datei steht dann für eine bestimmte Thematik. Die Einstellungen werden übrigens im Programm immer genau dann geladen, wenn sie benötigt werden. So werden Sie z.B. einmal im Einstellungsdialog geladen, wo ich auch einige Einstellungen verändern kann. Werden die Einstellungen dann im späteren Programm benötigt, dann werde sie auch nochmal geladen. So kann es natürlich vorkommen, dass ich Einstellungen mehrmals lade.
Wünsche
Nun habe ich zwei große Wünsche, welche sich mit meiner bisherigen Vorgehensweise wohl nicht so ganz umsetzen lassen:
(1) Ich möchte verschiedene Einstellungen benutzerabhängig machen. So soll es z.B. neben den globale Einstellungen, welche zuerst geladen werden, auch benutzerabhängige Einstellungen geben, welche ggf. die globalen Einstellungen überschreiben (ähnlich Linux- oder GIT-Konfigurationsdateien).
(2) Mein Programm gibt nach der Ausführung eine Ergebnisdatei aus (
XML-Datei). Hier möchte ich gerne alle Programmeinstellungen mitspeichern. Das mag jetzt erstmal etwas übermütig klingen, macht für meinen Anwendungsfall aber durchaus Sinn.
Lösungsfindung
Beide Wünsche würden sich einigermaßen leicht umsetzen lassen, wenn ich wirklich nur EINE Konfigurationsdatei habe. Diese wird dann in meinem Programm am Anfang global geladen (zunächst mit den globalen Einstellungen und danach mit den benutzerabhängigen). Dann müsste ich aber erstens alle Einstellungen in eine Datei packen (sehr unübersichtlich) und außerdem müsste ich alle Einstellungen am Anfang global laden - anderenfalls wird es wohl komplizierter umsetzbar.
Mich würden deshalb mal eure Konzepte zum Laden und Speichern von Einstellungen interessieren. Wie speichert ihr? Habt ihr auch benutzerabhängige Einstellungen? Und wie ist dann eure Handhabung im Delphi? Habt ihr für Konfigurationseinstellungen vllt sogar extra Klassen in extra Units?
Leider habe ich zu diesem Thema auch kaum Literatur im Internet gefunden. Vllt habe ich aber auch einfach nach den falschen Begriffen gesucht.
Wahrscheinlich wird es auf eine oder mehrere Units hinauslaufen, welche verschiedene Klassen implementieren, wo die Einstellungen gelesen und geschrieben werden können. Hier stellt sich mir dann aber direkt die Frage, ob man solche Klassen dann global erstellt oder doch lieber nur bei Bedarf. Dann kann es natürlich vorkommen, dass ich große Klassen mehrmals erzeugen muss.
Vielen Dank fürs durchlesen und die Hilfe!
Grüße
Headbucket