AGB  ·  Datenschutz  ·  Impressum  







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

Optimierte Optionen

Ein Thema von adecke · begonnen am 19. Nov 2004 · letzter Beitrag vom 23. Nov 2004
Antwort Antwort
adecke

Registriert seit: 9. Okt 2004
15 Beiträge
 
#1

Optimierte Optionen

  Alt 19. Nov 2004, 20:15
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
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Optimierte Optionen

  Alt 19. Nov 2004, 20:39
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 von adecke:
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.
Sind es so viele, dass man für die Zeit des Ladens einen Splashscreen braucht? Ich denke, einfach beim Starten des Programms laden und beim Verlassen des Programmes und (bei Klick auf OK/Übernehmen) des Optionendialoges speichern.

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
adecke

Registriert seit: 9. Okt 2004
15 Beiträge
 
#3

Re: Optimierte Optionen

  Alt 19. Nov 2004, 20:47
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Optimierte Optionen

  Alt 19. Nov 2004, 23:00
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
adecke

Registriert seit: 9. Okt 2004
15 Beiträge
 
#5

Re: Optimierte Optionen

  Alt 20. Nov 2004, 00:52
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:
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.
stellt mich aber nicht zufrieden. Das Close-Event (oForm) schreibt zwar die
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)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Optimierte Optionen

  Alt 20. Nov 2004, 04:15
Moin adecke,

ich dachte mir das so:

Ein Settings Objekt:

Delphi-Quellcode:
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;
das dann, z.B. im Hauptformular deklariert wird, und dann überall zur Verfügung steht.


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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
adecke

Registriert seit: 9. Okt 2004
15 Beiträge
 
#7

Re: Optimierte Optionen

  Alt 20. Nov 2004, 10:01
Morgen Chris,

danke für den Source, werde es heute noch implementieren.
Melde mich.

gruss adecke
  Mit Zitat antworten Zitat
adecke

Registriert seit: 9. Okt 2004
15 Beiträge
 
#8

Re: Optimierte Optionen

  Alt 23. Nov 2004, 17:08
Hallo,

die Sache ist echt super, hat funkt.

gruss und Thanks adecke
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:28 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