![]() |
Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhängig
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:
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 |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Hallöle...:P
Zitat:
Vorher eine Frage an dich... (nicht böse gemeint :P) Sagen dir die Begriffe Vererbung etwas? Wenn nicht, solltest du damit anfangen. Wenn du das innerlicht hast, dann kann man die komplexeren Fragen beantworten. 8-) Beispiel: 1. Klasse aus verschiedenen Basis Klassen abgeleitet. 2. z.B. aus verschieden INI laden. 3. Einstellungen die immer da sind (globale) und progammspezifische in einer Klasse |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Wieso keine Interfaces? Dann ließe sich die Applikation recht einfach erweitern, ohne dass man auf der GUI-Ebene eine Zeile Code ändern müsste.
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Moin...:P
Aus verschieden Gründen: 1. eine Klasse kapselt den Code für eine AUFGABE 2. Erweiterung einer Klasse für die AUFGABE mit anderen OPTIONEN 3. Eine Klasse ist WIEDERVERWENDBAR 4. Klasse ist OOP ... ...usw. :zwinker: Zitat:
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Nur wo werden dann z.B. für eine ini-Datei die Sections und Idents übergeben?
Das ist dann doch außerhalb. Dann ist diese Klasse ja nix anderes als ein Wrapper? Oder ich verstehe es nicht :lol: |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Was interessiert es denn den "Speichernden", wie die eigentliche Speicherung implementiert ist? Der muss nix von Idents und Sections wissen, dafür ist die Speicherklasse zuständig.
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
Denn wenn ich Sections und Idents doch eh außerhalb der Klasse "angebe" / von außerhalb der Klasse übergebe, wofür dann noch eine Klasse und all der Aufwand? |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Von welcher Klasse redest Du jetzt?
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
Wenn du eine INI verwendest dann mußt du auch den Code impementieren. :P |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
Wäre über ein Beispiel das so eine Funktion zeigt super dankbar. :cyclops: |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Im Augenblick ist das eher ungünstig, aber zu Hause könnte ich mal schnell was basteln. Ich glaube aber, Sir Rufo hat zu einem ähnlichen Problem auch schon einmal eine Interface-Lösung gezeigt, allerdings konnte ich den Thread auf die Schnelle nicht finden.
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Exakt :thumb:
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
Im Einstellungsfenster müsste dann aber auch komponentenbezogen für alle Komponenten eine Einstellungsmöglichkeit vorhanden sein. Wahrscheinlich dann über eine ComboBox aus der man die gewünschte Komponente wählt? @Headbucket: Ich hoffe ich kapere den Thread jetzt nicht und das sind auch Informationen die du gebrauchen könntest. :cyclops: :-D |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Das ist richtig, meine Anregung mit dem Interface bezog sich ja auch auf die Art der Speicherung (Ini, Registry, XML, Datenbank oder wo auch immer). Schau Dir doch den verlinkten Thread einmal an, das entspricht ziemlich genau dem, was mir durch den Kopf schoss.
|
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Zitat:
In meinem Fall würde ich die Einstellungen in einer Datenbank speichern um an jedem Arbeitsplatz die gleichen Einstellungen zu haben. Jetzt stellt sich mir die Frage wie ich das konkret machen würde. Würde ich an das Interface am besten die Komponente übergeben und in der Klasse die das Interface implementiert die Eigenschaften selbst auslesen oder wie macht man so etwas? Ich weiß das wird jetzt sehr speziell und es ist auch nicht mein Thread, aber ich habe die Befürchtung, dass ich nicht der Einzige bin der da evtl. verschiedene Dinge zu umständlich macht. |
AW: Vorgehensweise beim Laden und Speichern von Programmeinstellungen | Benutzerabhän
Vielen Dank schonmal für die zahlreichen Antworten!
Zitat:
Für die Speicherung bestimmter Objekte verwende ich sogar schon Interfaces. So kann wahlweise als XML, in SQLite oder auf einer Server-Datenbank gespeichert werden. Nungut. Dann werde ich wohl die Speicherung mal auf verschiedene Klassen verteilen. Meine Bedenken waren da einfach, dass ich damit zu viel "Overhead" produziere, wenn ich diese Klassen wieder und wieder erzeuge und die Daten (mitunter Daten, welche ich in dem Moment gar nicht benötige) ständig neu lade, solange ich die Klassen nicht global halte. Wenn ich dann auch noch verschiedene Berechtigungsebenen habe, dann muss ich die Daten ja sowieso schon jedes mal mehrmals laden (globale Einstellungen, Benutzereinstellungen, usw.). Ich sträube mich aber irgendwie dagegen diese Klassen dann alle global zu halten - schwierig. Es handelt sich halt um ein riesiges Programm mit 1000 verschiedenen Einstellungen. Aber wahrscheinlich sollte ich gerade deshalb mal etwas Ordnung reinbringen. Falls jemand aber mal praktisch und nicht nur theoretisch :P ein komplexes Speichersystem im Einsatz hat, dann würde ich mich über Erfahrungsberichte freuen. Zitat:
Besten Dank nochmal für die vielen Antworten! Grüße Headbucket |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz