![]() |
Optimierte Optionen
Hallo und guten Abend,
mein Interesse gilt dem optimalen Handling von Programm-Optionen. Jeder kennt ja das vermeintliche Menü "Extras" mit dem Eintrag "Optionen.." Nun mach ich mir so meine Gedanken wie dies am besten zu handhaben wäre. Folgende Möglichkeiten sehe ich hier. 1. Laden und Sichern der Einstellungen über eine Schleife (TComponent) in einen Datastream (Optionen.dat). 2. Laden und Sichern in/aus einem Ini-File. Problem hier, die Typen usw. 3. Laden und Sichern in/aus Registry. So machen es fast alle. 4. Laden und Sichern in/aus XML. Hab ich noch nicht ausprobiert. Bei all diesen Optionen (der Optionen) stellt sich die Frage an welcher Stelle (Zeitpunkt) selbige nun eigentlich geladen bzw. gesichert werden sollten. Meiner Meinung nach, noch bevor die eigentliche Applikation rennt (Splash Screen?), oder doch später. Doppeltes laden ? Application und Optionen-Dialog. Mich würde intressieren wie Ihr hier verfahrt oder. gruss adecke |
Re: Optimierte Optionen
Hi. Also wenn es nicht zu viele Optionen/Einstellungen sind, speichere ich meine Einstellungen in einer INI Datei. Das geht immer noch am schnellsten. XML ist aber wahrscheinlich nicht viel anders.
Zitat:
Man liest sich, Stanlay :hi: |
Re: Optimierte Optionen
Hallo,
bei einem kleinen Programm ist es sicher sinnvoll (ini), aber nehmen wir mal etwas größeres. Wie macht es z.B. Microsoft bei Word ? Viele der Optionen werden ja schon für die Darstellung des 1. Dokuments benötigt (einige liegen sogar im Doc). Nehmen wir einmal an es geht um eine ganze Menge Props. Macht es da nicht Sinn den Optionen-Dialog als ersten zu initialisieren. Alle weiteren Forms können dann direkt auf die Props des Optionen-Dialog zugreifen. Somit sind alle Props Global. gruss |
Re: Optimierte Optionen
Moin adecke,
also ich verwende immer ein Settings Objekt, über das die Einstellungen geladen und gespeichert werden, und lese die Werte dann nicht aus dem Formular aus, sondern aus diesem Objekt. Dadurch bin ich auch vom Formular unabhängig. |
Re: Optimierte Optionen
Auch Moin,
das ist mir jetzt nicht klar, wie das laufen soll. Wäre Dir dankbar für ein kleines Beispiel. In den Jedi VCL gibt es ja auch ein paar Components (AppStorage usw.). Ein Ansatz war z.B. der:
Delphi-Quellcode:
stellt mich aber nicht zufrieden. Das Close-Event (oForm) schreibt zwar die
Program TestOptions;
Uses Forms, master In 'master.pas' {mForm}, optionen In 'optionen.pas' {oForm}; {$R *.res} Begin oForm := ToForm.Create(Application); oForm.Update; Application.Initialize; Application.CreateForm(TmForm, mForm); Application.CreateForm(ToForm, oForm); Application.Run; End. Props (in diesem Fall in die Registry), aber das Close-Event der oForm überschreibt die Werte (löscht sie). Na ja, werde mir jetzt eine DVD einwerfen und mich vor's TV hängen. Morgen geht es weiter. Also dann, gut's Nächtle (sagt der Schwabe) |
Re: Optimierte Optionen
Moin adecke,
ich dachte mir das so: Ein Settings Objekt:
Delphi-Quellcode:
das dann, z.B. im Hauptformular deklariert wird, und dann überall zur Verfügung steht.
type
TadSettings = class(TObject) private Fini : TIniFile; function GetMyOption: string; procedure SetMyOption(const Value: string); public constructor Create(const AsIniPath : string); destructor Destroy; override; property MyOption : string read GetMyOption write SetMyOption; end; implementation constructor TadSettings.Create(const AsIniPath: string); begin inherited Create; Fini := TIniFile.Create(AsIniPath); end; destructor TadSettings.Destroy; begin FreeAndNil(Fini); inherited; end; function TadSettings.GetMyOption: string; begin Result := Fini.ReadString('Options','MyOption','<NIX>'); end; procedure TadSettings.SetMyOption(const Value: string); begin Fini.WriteString('Options','MyOption',Value); Fini.UpdateFile; end;
Delphi-Quellcode:
type
TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } FSettings : TadSettings; public { Public-Deklarationen } property Settings : TadSettings read FSettings; end; implementation procedure TForm1.FormCreate(Sender: TObject); begin FSettings := TadSettings.Create(ExtractFilePath(paramstr(0))+'\MySettings.ini'); Edit1.Text := FSettings.MyOption; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FSettings); end; |
Re: Optimierte Optionen
Morgen Chris,
danke für den Source, werde es heute noch implementieren. Melde mich. gruss adecke |
Re: Optimierte Optionen
Hallo,
die Sache ist echt super, hat funkt. gruss und Thanks adecke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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 by Thomas Breitkreuz