AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Programmoptionen organisieren?

Ein Thema von EConvertError · begonnen am 18. Nov 2006 · letzter Beitrag vom 19. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#1

Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 11:10
Hallo!

Ich interessiere mich dafür, wie ihr eure Programmoptionen organisiert. Hierbei meine ich allerdings NICHT, ob ihr sie in einer Ini-, XML-, Binärdatei oder in der Registry speichert. Dazu gibt es bereits genug Threads.

Vielmehr interssiert mich, wie ihr es im Code organisiert. Habt ihr ein globales Settings-Objekt (der Name ist eher nebensächlich, ihr wisst was ich meine ), oder handhabt ihr das ganz anders.

Und falls ihr ein globales Objekt habt, sind dort die Einstellungen typisiert, sodass ihr nur mehr so schreiben müsst:
Delphi-Quellcode:
MainForm.Width := Settings.Width;
MainForm.Color := Settings.Color;
// usw.
Und wenn ihr das so macht: Wie geht ihr mit Verschachtelungen um?

Oder müsst ihr TIniFile/TRegistry-Methoden nutzen? Nutzt ihr in diesem Fall ebenfalls ein globales Objekt?

Also um meine Frage noch einmal allgemein zu formulieren: Wie organisiert ihr eure Programmoptionen im Code?

Vielen Dank,
Andreas
Andreas N.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 12:33
Hi,
also ich verwende kein globales Objekt, sondern vielmehr für die jeweiligen Teilgebiete eine eigene Kapselung. Die ist dann möglichst abstrakt und es gibt dann noch konkrete Implementierungen (falls sich mal was an der Art der Datenspeicherung ändert).

Diese Objekte kümmern sich dann immer um den Teil, der für sie wichtig ist. Besonders gerne nutze ich hier auch die Kombination mit Archivdateien, die mehr als eine Datei beihalten können (z.B. Zip-Dateien). Da kann man dann alle Optionen an einem Ort unterbringen, hat den Vorteil den halt eine Datei gegenüber der Registry bietet (wenn es um das einfache Kopieren ohne Installer geht) und man hat trotzdem ein wenig Modularisierung.
Alle Einstellungen lassen sich damit auch einzeln anpassen und ich finde es lässt sich gut damit arbeiten.

Hoffe ich die Frage so richtig verstanden,

Gruß Der Unwissende
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 13:04
Ich mach mir immer ein record wo ich alle optionen reinlade und an bestimmten punkten lade und speichere
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#4

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 13:07
Zitat von pacman1986:
Ich mach mir immer ein record wo ich alle optionen reinlade und an bestimmten punkten lade und speichere
Jupp, dito.
  Mit Zitat antworten Zitat
EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#5

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 13:24
Vielen Dank für eure Antworten!

Einerseits bin ich sehr den oben von mir angedeuteten typisierten Ansatz, anderseits wüsste ich nicht, wie man da Verschachtelungen ordentlich implementieren könnte.

Eure Record-Implementation entspricht eigentlich meinem typisierten Ansatz (das eigentliche Medium ist ja egal; man kann ja auch ein TIniFile/TRegistry so kapseln). Ihr verzichtet also auf eine Verschachtelung?

TRegistry und TIniFile unterstützen zwar Verschachtelungen, nur bin ich auf die ReadXXX und WriteXXX Methoden angewiesen. Dadurch habe ich dann überall im Code meine Konstanten für das Herauslesen (Key-, Sectionname) verstreut und nicht alles an einer Stelle.

Deshalb frage ich einfach mal ganz unverschämt, wie ihr das macht.

Dankeschön,
Andreas
Andreas N.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 13:33
Zitat von EConvertError:
Ihr verzichtet also auf eine Verschachtelung?
Sorry, aber ich kapier nicht ganz, was du mit "Verschachtelungen" meinst.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#7

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 13:39
Du kannst auch ein Objekt mehr oder weniger Vollautomatisch füllen und speichern lassen.

Du gehts halt per RTTI über das Objekt und nimmst den Klassennamen als Sectionname und die einzelnen Felder als Wertenamen. Das geht volldynamisch und Du kannst so beliebige Struktur ablegen und wieder auslesen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 14:05
Hallo Andreas,

Zitat von EConvertError:
TRegistry und TIniFile unterstützen zwar Verschachtelungen, nur bin ich auf die ReadXXX und WriteXXX Methoden angewiesen. Dadurch habe ich dann überall im Code meine Konstanten für das Herauslesen (Key-, Sectionname) verstreut und nicht alles an einer Stelle.
Das vermeidest du, indem du den richtigen Ansatz wählst: klick
Auf diese Weise könntest du sogar relativ schnell auf ein anderes Medium (Registry, XML-Datei) wechseln.

Gruß Hawkeye
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#9

Re: Wie Programmoptionen organisieren?

  Alt 18. Nov 2006, 14:15
Also ich mach das so: http://www.delphipraxis.net/internal...ct.php?t=80217
Kommt natürlich auch auf Art und Größe des Programms an, aber in den meisten Fällen is das ganz praktisch...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#10

Re: Wie Programmoptionen organisieren?

  Alt 19. Nov 2006, 00:00
Zitat von EConvertError:
Vielen Dank für eure Antworten!

Einerseits bin ich sehr den oben von mir angedeuteten typisierten Ansatz, anderseits wüsste ich nicht, wie man da Verschachtelungen ordentlich implementieren könnte.

Eure Record-Implementation entspricht eigentlich meinem typisierten Ansatz (das eigentliche Medium ist ja egal; man kann ja auch ein TIniFile/TRegistry so kapseln). Ihr verzichtet also auf eine Verschachtelung?

TRegistry und TIniFile unterstützen zwar Verschachtelungen, nur bin ich auf die ReadXXX und WriteXXX Methoden angewiesen. Dadurch habe ich dann überall im Code meine Konstanten für das Herauslesen (Key-, Sectionname) verstreut und nicht alles an einer Stelle.

Deshalb frage ich einfach mal ganz unverschämt, wie ihr das macht. :mrgreen:

Dankeschön,
Andreas
Hallo,

ich habe ein Objekt "XYZSettings", das seinerseits aus "Value"-Objekten besteht, die einen sinnvollen Namen haben wie "PrinterMarginLeft" und einen Typ wie Integer, Real, Color usw. was man so brauchen kann (wird ständig erweitert). Diese werden im Create initialisiert, dabei (und nur hier!!!) werden auch Section und Key für die Ini-Datei bestimmt und im Value-Objekt gespeichert (die Defaultwerte übrigens auch, und auch der Bezug zu einem TEdit o.ä. sofern vorhanden). Also stehen die alle an einer Stelle (im overrided Create) und sind eindeutig.

Neben Einzelroutinen für die Value-Objekete hat das Settings-Objekt auch Routinen wie ReadAllvalues (zum Programmstart) und SaveAllValues (am Ende). Normalerweise speichere ich vom User eingegebene Änderungen nicht extra in die INI-Datei, sondern nur in Settings.Value - die Saveroutinen am Programmende vergleichen den aktuellen Wert mit dem zuletzt eingelesenen und speichern nur wenn nötig (dirty).

Das Ganze hat bei einem komplexen Projekt mehr als 2500 Zeilen Umfang, dafür geht so etwas wie die Verwaltung von Stiften und Farben für Plots fast automatisch. Es gibt in dem Beispiel ja auch mehr als 200 Variablen, die der Benutzer ändern kann, um seine Plots anzupassen, und entsprechend viele Controls zur Eingabe von Zahlen, Farben, Stiftmustern usw.

Gruss Reinhard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:52 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