Einstellungen für Applikationen verwalten

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
charlytango
Beiträge: 424
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0 fixes FPC 3.2 fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Einstellungen für Applikationen verwalten

Beitrag von charlytango »

Hi

Für jedes größere Projekt fallen etliche Einstellungsparameter an.
Faben, Flags diverse Auswahlmöglichkeiten, Schalter die den Programmablauf beeinflussen etc etc.
Also so etwas ähnliches wie in Lazarus bei Project-Project Options oder Tools-Options kommt. Ein Fenster mit einer Navigation durch verschiedene Themen und Eingabemöglichkeiten. Da kommt schon einiges zusammen. Eben auch an dahinter liegender Programmlogik -- viel Code in einer Unit.

Meine Frage: Wie geht ihr das an? Für jedes Thema ein eigenes Form, Frame oder einen Tabreiter? Oder irgendwie generisch?

In die Datenbank oder in irgendwelche Dateistrukturen speichern (xml, json, ini)?
Netzwerk und Multiusertauglich?

Nur für ein Projekt zugeschnitten oder wiederverwendbar ?

Das ist nur die Seite für die Eingabe -- wie haltet ihr die Informationen im Programm dann vor? Singleton als Settings-Objekt? Darin Datenbankzugriffe? Alles in ein Memdataset laden und jedemal eine Suche? Oder für jedes Attribut ein Property?

Tips und Erfahrungen? Warnungen? Performanceprobleme?

THX

Benutzeravatar
Ally
Beiträge: 186
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Einstellungen für Applikationen verwalten

Beitrag von Ally »

Hallo charlytango,

ich habe mir dafür eine kleine Unit gebaut, die String, Integer, Boolean, usw. in die Registry schreiben und daraus lesen kann.
Das Ganze funktioniert auch unter Linux, dort werden Registry-Zugriffe automatisch im Order .config in einer entsprechenden XML gespeichert.
Im Anhang ein Beispiel.

Gruß Roland
Dateianhänge
ProgSet.zip
(326.67 KiB) 31-mal heruntergeladen

mschnell
Beiträge: 3443
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Einstellungen für Applikationen verwalten

Beitrag von mschnell »

Registry: igitt.
In Windows geht das doch auch mit den XML-Dateien.
Es gibt (in Windows) Standard-Directories für die verschiedenen Verwendungs-Zwecke der Konfig-Daten eines Programms:
- nur von Admin schreibbar, immer lesbar
- User-spezifisch lesbar und schreibbar
- von allen Usern lesbar und schreibbar

-Michael

Benutzeravatar
Ally
Beiträge: 186
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Einstellungen für Applikationen verwalten

Beitrag von Ally »

Hallo mschnell,

ja dieser Registry igitt Glaubenskrieg wurde schon unzählige male geführt.
Natürlich kann jeder seine Einstellungen dort hin schreiben wo er möchte und das Betriebssystem ihm das (noch) erlaubt.
Unter Windows ist die Registry eine Möglichkeit die Einstellungen komfortabel und zukunftssicher zu verwalten.

Ich nehme an man hat registry deshalb in freepascal auch so implementiert das es cross-platform ist. https://wiki.freepascal.org/fcl-registry
Für mich ist das eine super Lösung. Egal welches BS, die Einstellungen werden immer am richtigen Ort abgelegt.

Wer dann selbst etwas zusammenfrickeln möchte, der hat ja alle Möglichkeiten. :wink:
Mein Beispiel soll einfach nur zeigen wie einfach das Leben sein kann. :)

Grüße Roland

charlytango
Beiträge: 424
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0 fixes FPC 3.2 fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Re: Einstellungen für Applikationen verwalten

Beitrag von charlytango »

Ally hat geschrieben:
Mi 14. Apr 2021, 10:20
ich habe mir dafür eine kleine Unit gebaut, die String, Integer, Boolean, usw. in die Registry schreiben und daraus lesen kann.
Das Ganze funktioniert auch unter Linux, dort werden Registry-Zugriffe automatisch im Order .config in einer entsprechenden XML gespeichert.
Im Anhang ein Beispiel.
Hallo Roland,

das beantwortet einmal meine Frage nach dem Speichermedium.

Nur... wie machst du das Interface zur Eingabe?
Generisch? Frames? Forms? Tabreiter etc etc ?

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 775
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Einstellungen für Applikationen verwalten

Beitrag von kralle »

Moin,

wie wäre es hiermit:
https://wiki.freepascal.org/TXMLPropStorage/de ?

Gruß Heiko
Linux Mint 20.1, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

Benutzeravatar
Ally
Beiträge: 186
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Einstellungen für Applikationen verwalten

Beitrag von Ally »

Hallo charlytango,
Nur... wie machst du das Interface zur Eingabe?
Generisch? Frames? Forms? Tabreiter etc etc ?
Ich bin mir nicht sicher ob ich das jetzt richtig verstehe.
Meinst du z.B. ein Fenster in dem der Anwender Einstellungen auswählen kann?
Wenn ja, dann kann man das sicherlich nicht allgemeingültig beantworten.
Starte doch einfach mal alle Anwendungen die du so auf deinem Rechner hast und schau dir an wie es dort gelöst ist.
Was dann gut zu deinem Programm passt und dir am besten gefällt, das ist es dann. :)

Gruß Roland

charlytango
Beiträge: 424
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0 fixes FPC 3.2 fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Re: Einstellungen für Applikationen verwalten

Beitrag von charlytango »

Ally hat geschrieben:
Do 15. Apr 2021, 10:16
Ich bin mir nicht sicher ob ich das jetzt richtig verstehe.
Meinst du z.B. ein Fenster in dem der Anwender Einstellungen auswählen kann?
Wenn ja, dann kann man das sicherlich nicht allgemeingültig beantworten.
Hallo Roland,

Egal welches Programm man schreibt, fallen immer wieder Einstellungs-daten mit denen Ablauf, Aussehen und Funktion etc beeinflusst werden.
Also Options oder Einstellungen.

Für etwas kleineres mit ein paar Einstellungen pinselt man ein Formular, nimmt je nach Gusto eine Komponente wie TXMLPropStorage oder TINIPropStorage oder schreibts in die Registy oder meinetwegen auch mit JSon irgendwie ins Internet. Alles keine Hexerei und Standard.

Nun hab ich aber vielleicht eine größere Applikation mit sagen wir mal 100 oder mehr Einstellungsmöglichkeiten. Will die vielleicht auch benutzerbezogen im Netzwerk verwalten. Möchte die immer wieder benutzten Einstellungen (Pfadeinstellungen, Datenbankanbindung, Farbverwaltung, skins, uvam) nicht immer neu machen sondern irgendwie aus einem Repository generieren.
Möchte dem Benutzer oder Admin der da gerade was einstellt auch Hilfs-und Erklärungstexte mitgeben (ich zb sehe kaum in eh nicht mitgelieferte Dokus und weiß bei einem Programm gern was der schalter da gerade auslöst).

Das ganze soll dann auch noch ansprechend dem Benutzer/Admin präsentiert werden und vom Programmierer idealerweise auch nicht immer neu geschrieben werden müssen.
Ich würde Datenbank-getrieben und generiert bevorzugen- einfach als Coder in einem Frontend die nötigen Einstellungen zusammen klicken oder neue erstellen und wiederverwenden. Samt dazu gehörendem Objekt das mir die Applikationsübergreifenden Einstellungen verwaltet.

Ich vermisse solche Ansätze/Komponenten in Lazarus schmerzlich, denn ich kann mir nicht vorstellen dass es dafür keinen Bedarf gibt. Alleine schon aus dem RAD Ansatz her.

Hatte so etwas, bin aber nicht zufrieden damit (funktional und optisch) -- deswegen fragte ich wie andere das gelöst haben.

LG
Karl

Antworten