AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wie verwaltet Ihr Anwendungseinstellungen?

Ein Thema von scrat1979 · begonnen am 28. Jan 2011 · letzter Beitrag vom 29. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2   
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#1

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Jan 2011, 13:08
Lustig, über das Thema schreibe ich gerade einen Artikel.

Gibt verschiedene Ansätze:
* Struktur-Dateien
* Textdateien im Key/Value Prinzip
* Ini-Dateien
* DFM-Prinzip (automatische Serialisierung)
* XML-Dateien
* Registry

Alle haben ihre Vor- und Nachteile.
Meine Programme haben bist jetzt die Registry genutzt.
Die nächsten Programme werden wohl XML-Dateien im Benutzerprofil speichern.

Über die RTTI speichern und laden sich meine Objekte selbstständig.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Jan 2011, 13:14
Hallo Bernd,

wo wird der Artikel denn zu lesen sein?
Jens
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Mai 2011, 01:43
Hallo Bernd,

wo wird der Artikel denn zu lesen sein?
Der Artikel wird voraussichtlich im
Entwickler Magazin 4.2011 Seite 68 ff.
erscheinen.

Einstellungssache - Anwendungsdaten und Einstellungen laden, verarbeiten und speichern
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.990 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Mai 2011, 05:45
Ich habe zu dem Zweck eine fertige Lösung vorbereitet. Die sucht automatisch an den möglichen Stellen in der richtigen Reihenfolge und erlaubt es so dem Benutzer anzugeben wo die Einstellungen liegen sollen. Zudem kann man eine portable Version unabhängig von einer installierten Version einfach mal auf dem selben Rechner starten usw.

Du findest die Units plus Demo hier:
http://www.delphipraxis.net/917904-post.html
Sowie eine Erklärung zu den Hintergründen hier:
http://www.delphi-library.de/viewtopic.php?p=541637
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#5

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Mai 2011, 16:01
Mhm, ich fahre bei solchen Sachen meistens 4-gleisig, je nach Anwendung

1) Der Installer (und zwar nur der Installer) schreibt den Installationspfad in die Registry. Das hilft beim leichteren Auffinden des Programms für einen Updater oder bei einem Support-Anruf, wenn der Kunde keine Ahnung hat, wo das Pogramm eigentlich liegt und / oder sein Icon / die Programmgruppe gelöscht hat etc.

2) "Normale" Programm-Einstellungen liegen in einer kleinen embedded Firebird-Datenbank (Anm.: ich liebe diese Datenbank!) im AppData-Verzeichnis und können vom User im Programm selbst über einen Settings-Bildschirm geändert werden.
Ebenso liegen in der Datenbank interne Einstellungen, die nur der Entwickler selbst, das Installationsprogramm oder ein Updater ändern muss.

3) Erweiterte Programm-Einstellungen für den Benutzer, die man teilweise nur zu Endpoint-Debug-Zwecken braucht oder vom End-Anwender nur einmalig umgeändert werden müssen, liegen in einer kleinen INI-Datei im AppData-Verzeichnis der Applikation.

4) Hat die Applikation eine Lua-Schnittstelle, liegen die Config-Einstellungen auch teilweise in einem Lua-Table.

Generell bin ich auch, aufgrund der Einfachheit, ein Freund der guten alten INI-Datei, XML hin oder her. INI's kann jeder Endanwender im Support-Fall leicht selbst editieren und muss sich nicht durch irgendwelche Registry-Einträge hangeln. Wichtig ist hier nur, dass die INI-Datei nicht mehr, wie es bei vielen jahrelang usus war, im Programm-Verzeichnis liegt, sondern im zugehörigen AppData-Verzeichnis. Hier hilft es auch, eine Verknüpfung zur INI-Datei mit dem Installationsprogramm im eigentlichen Applikations-Verzeichnis anzulegen, damit der Endanwender sich wiederum nicht zu den AppData-Verzeichnissen hangeln muss.
Ausserdem ein Vorteil von INIs (und auch XMLs): Man kann durch schlichtes Löschen der INI-Datei das Programm so auch leicht auf "Factory Reset" setzen, falls ein Endanwender es irgendwie geschafft hat, irgendwelche Form-Grössen oder Positionen völlig zu zerschiessen etc. und auch nicht editieren will

XML ist zwar generell die "schönere" und modernere Variante der INI, aber ich habe es schon oft erlebt, dass ein Endkunde die XML mit einem schwindligen Editor geöffnet und editiert hat, der dann die UTF8-Kodierung der XML beim speichern komplett zerstört hat.
Deswegen nutze ich XML meist nur für interne Zwecke, Import / Export und dergleichen. Aber nie für Dinge, die der Endanwender auch mal mit einem Editor ändern muss.

Geändert von blackfin (28. Mai 2011 um 17:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
685 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Jan 2011, 13:42
Die nächsten Programme werden wohl XML-Dateien im Benutzerprofil speichern.
Da ich gerade exzessiv mit JSON rumhantiere: das Format ist weitaus einfacher als XML und es gibt eine Komponente namens SuperObject (http://www.progdigy.com), die die Verarbeitung mehr als einfach erledigt. Ein einfaches SO(json_text) liefert eine Instanz basierend auf der JSON-Repräsentation, so_instanz.AsString liefert die JSON-Repräsentation der Objekt-Hierarchie.
Für mich in Zukunft das Mittel zum Speichern komplexer Objekt-Bäume.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Jan 2011, 14:13
Um die Einstellungen in den Programmen zu Verwalten nutze ich in der VCL sowie auch in der nonVCL eine Klasse in
Verbindung mit einem Record oder eben nur einen Record. Es ist imho immer die Frage wie viele Daten man speichern
möchte, ob die Angelegenheit erweiterbar gestaltet werden soll und oder ob die gespeicherten Daten manuell
bearbeitbar sein soll.

Ich verwende gern Ini-Dateien, der Vorteil ist das man seine Programme dadurch leicht portabel bekommt.
Manchmal nutze ich auch gern eigene binäre Konfigurationsdateien in denen ich einfach einen Rekord abspeichere.
Die kleinste Konfig.-datei ist gerade mal ein Byte gross mit acht enthaltenen Infos.
Registry kommt für mich nur in Frage, wenn man auf Systemdaten zugreifen will oder seine Daten bzw.
Einstellungen global auf dem Windowssystem verfügbar machen möchte.
XML und der gleichen nutze ich hingegen ungern bzw. sogut wie nie da mir der Aufwand zu gross und meine Programme
zu klein dafür sind.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.400 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 28. Jan 2011, 19:16
Die kleinste Konfig.-datei ist gerade mal ein Byte gross mit acht enthaltenen Infos.
Ob nun 1 Byte oder 8 KB ist doch egal.

Ein Cluster ist heutzutage wohl schonmal durchschnittlich 4 KB bis zu 64 KB und eine Datei belegt immer ein Mehrfaches an ganzen Clustern.

PS: XML gegenüber INI ist kein großer Unterschied ... es sind etwa die selbe Anzahl an Befehlen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2011 um 19:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 29. Jan 2011, 02:11
Bei überschaubaren Progrämmchen haben meine einstellbaren Klassen oft eine Load/-SaveSettingsToStream()-Methode.
Bei größeren, oftmals eigene Settings-Klassen.

Wo?
Privat: Zu 80% in der Exe selber.
Ansonsten: Als Binärfile oder ini in %appdata%
Registry vermeid ich auch wo es geht.
  Mit Zitat antworten Zitat
Zuck

Registriert seit: 29. Mai 2011
19 Beiträge
 
#10

AW: Wie verwaltet Ihr Anwendungseinstellungen?

  Alt 29. Mai 2011, 12:17
Die nächsten Programme werden wohl XML-Dateien im Benutzerprofil speichern.
Da ich gerade exzessiv mit JSON rumhantiere: das Format ist weitaus einfacher als XML und es gibt eine Komponente namens SuperObject (http://www.progdigy.com), die die Verarbeitung mehr als einfach erledigt. Ein einfaches SO(json_text) liefert eine Instanz basierend auf der JSON-Repräsentation, so_instanz.AsString liefert die JSON-Repräsentation der Objekt-Hierarchie.
Für mich in Zukunft das Mittel zum Speichern komplexer Objekt-Bäume.
So mache ich das auch. Ich find JSON genial. Man kann jede noch so komplexe Objektstruktur darstellen, was ja bei INI nicht möglich ist und bei XML doch bald mal in den Speicher gehen kann. Zusätzlich ist es mit JSON extrem leicht möglich, Einstellungen aus dem Internet zu laden (wir speichern einige Einstellungen auf unserem Firmenserver und einige Kunden haben doch noch recht langsame Verbindungen, bei denen jedes Byte Zeit kostet).

SuperObject muss ich mir mal anschauen - wir haben dafür mal was eigenes entwickelt, aber die Produkte von progdigy sind doch immer wieder ein Grund zur Freude.

Zuck
Zuck
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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