Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wo lege ich Benutzereinstellungen ab (https://www.delphipraxis.net/212846-wo-lege-ich-benutzereinstellungen-ab.html)

ggscholz 12. Apr 2023 15:42

Wo lege ich Benutzereinstellungen ab
 
Hallo in die Runde,

gegeben: Windows-Arbeitsplatzrechner, die von verschiedenen Personen über den Tag benutzt werden und mit dem Benutzer Team angemeldet sind. Alle starten eine auf einem Serververzeichnis abgelegte exe

bisher speichere ich programmspezifische Einstellungen in einer INI Datei, die als RECHNERNAME.INI in einem zentralen Verzeichnis der Anwendung abgelegt ist. Kommt ein neuer Rechner dazu, gibt es eine neue Ini-Datei. In der Ini-Datei steht z.B. die Größe des Anwendungsfensters, welche Oberfläche eingestellt ist, Angaben zum Drucker, Ausdruck mit oder ohne Vorschau oder Drucken auf einem Etiketten-Drucker. Beim Programmstart wird die Ini gelesen, wärend der Benutzung des Programms werden die Daten eher selten abgefragt, bei einer Änderung der Einstellungen dann natürlich gespeichert.

Funktioniert bisher ohne Probleme. Jetzt überarbeite ich mein Programm gerade, da würde ich gerne wissen, ob das noch State of the Art ist

Mein Frage: wo legt man diese Rechnerspezifischen Daten ab. Vor jetzt mehr als 20 Jahren habe ich mich für die Ini Datei entschieden, die Registry (gab's die da schon) stand vielleicht auch noch zur Wahl.

Legt man solche Daten in der sowieso benutzten Datenbank ab?

Über ein paar Anregungen würde ich mich freuen!!

Beste Grüße

gerd

Uwe Raabe 12. Apr 2023 16:01

AW: Wo lege ich Benutzereinstellungen ab
 
Zitat:

Zitat von ggscholz (Beitrag 1520936)
wo legt man diese Rechnerspezifischen Daten ab.

Dafür bietet sich TPath.GetPublicPath an.

Die INI-Datei selbst ist OK.

tewes 13. Apr 2023 07:42

AW: Wo lege ich Benutzereinstellungen ab
 
Hallo,

meine Gedanken/Anregungen:
1. Rund um die exe auf dem Server sollten Benutzer eigentlich keine Schreibberechtigung haben
2. GetPublicPath liegt lokal auf dem Client. Nach einem Wechsel der Festplatte sind die Einstellungen weg.
3. Mögliche Lösung: Tabelle in Datenbank, z.B. ini_local(Rechnername, Ident, Value)

Phoenix 13. Apr 2023 09:43

AW: Wo lege ich Benutzereinstellungen ab
 
Zitat:

Zitat von ggscholz (Beitrag 1520936)
Legt man solche Daten in der sowieso benutzten Datenbank ab?

Wenn Du eh schon eine DB hast, spricht grundsätzlich nichts dagegen das auch dort abzulegen.

Ansonsten gibt es das %AppData% Verzeichnis, dort sollten anwendungsspezifische Daten lokal abgelegt werden.

Uwe Raabe 13. Apr 2023 14:09

AW: Wo lege ich Benutzereinstellungen ab
 
Zitat:

Zitat von Phoenix (Beitrag 1520972)
Ansonsten gibt es das %AppData% Verzeichnis, dort sollten anwendungsspezifische Daten lokal abgelegt werden.

%APPDATA% ist aber User-spezifisch und auch noch rechnerübergreifend:
Zitat:

APPDATA=C:\Users\Uwe\AppData\Roaming
Besser wäre %ALLUSERSPROFILE%:
Zitat:

ALLUSERSPROFILE=C:\ProgramData
Das ist aber auch genau das, was TPath.GetPublicPath zurückliefert.

Zitat:

Zitat von tewes (Beitrag 1520961)
2. GetPublicPath liegt lokal auf dem Client. Nach einem Wechsel der Festplatte sind die Einstellungen weg.

Das gilt aber für alle Dateien auf der Festplatte, solange man die nicht sichert und wiederherstellt. Wenn Datenverlust ein Problem ist, dann gilt das für jeden anderen Speicherort genauso.

Ich habe in der Regel so meine Bedenken zum Speichern von Settings in der Produktivdatenbank. Die sind nämlich nach Einspielen eines Backups potentiell ebenfalls weg. Die meisten Anwender (zumindest die ich kenne) gehen nicht davon aus, dass das Einspielen eines älteren Datenbestands auch ihre Settings verändert.

Stevie 13. Apr 2023 17:09

AW: Wo lege ich Benutzereinstellungen ab
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1520981)
Ich habe in der Regel so meine Bedenken zum Speichern von Settings in der Produktivdatenbank. Die sind nämlich nach Einspielen eines Backups potentiell ebenfalls weg. Die meisten Anwender (zumindest die ich kenne) gehen nicht davon aus, dass das Einspielen eines älteren Datenbestands auch ihre Settings verändert.

Das kommt wohl sehr auf den Blickwinkel, die Settings und die Anwendung im Detail an - wenn man sich von verschiedenen Rechnern mit der Anwendung anmelden kann, dann erwartet man auch, dass die entsprechenden Einstellungen auf allen Rechnern gleich sind.

Uwe Raabe 13. Apr 2023 21:25

AW: Wo lege ich Benutzereinstellungen ab
 
Ich gebe dire recht, dass dies für Einstellungen, die sowohl rechner- als auch user-bezogen gleich sein sollen, ds Speichern in einer DB sinnvoll sein kann.
Allerdings ging es in dem Eingangspost genau darum, dass die Einstellungen rechnerbezogen sein sollen.

TigerLilly 14. Apr 2023 09:10

AW: Wo lege ich Benutzereinstellungen ab
 
Ich habe gerade bei Leuten im Home Office erlebt, dass es keine gute Idee ist, wenn alle Settings nur benutzerspezifisch sind. Fenstergrößen - und positionen müssen zum verwendten Monitor passen und da ist zwischen Office und Home Office oft ein Unterschied. Ich tendiere mittlerweile eher zu einer Kombi aus Rechner+Benutzer.
Aber ich bin auch eher dafür, die Settings in der DB zu speichern. da werden sie jedenfalls gesichert und ein Restore ist ohnedies nichts alltägliches und setzt eben die Daten UND Einstellungen auf Tag X zurück.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz