Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SJ Config Utils 1.0 beta 1

  Alt 29. Mai 2009, 05:45
Teil 2: Implementierung im eigenen Programm

Wie ich bereits gesagt habe muss die eigene Einstellungsklasse von TAppConfigManager abgeleitet werden. Wenn bereits eine solche Klasse existiert, kann diese einfach entsprechend ergänzt werden. So habe ich es bei meinen Projekten auch gemacht.
Dann müssen ein paar Methoden überschrieben bzw. implementiert werden. Insgesamt sieht das dann so aus:
Delphi-Quellcode:
uses
  XMLIntf, IniFiles, Registry, SJConfigUtils, ...;

type
type
  TAppConfig = class(TAppConfigManager)
  protected
    procedure LoadFromStream(Data: TStream); override;
    procedure SaveToXml(Ini: IXMLDocument); override;
    procedure LoadFromINI(Ini: TCustomIniFile); override;
    procedure LoadFromRegistry(Reg: TRegistry; ParentPath: String); override;

    procedure SaveToStream(Data: TStream); override;
    procedure LoadFromXml(Ini: IXMLDocument); override;
    procedure SaveToINI(Ini: TCustomIniFile); override;
    procedure SaveToRegistry(Reg: TRegistry; ParentPath: String); override;

    procedure RunConfigWizard; override;
    procedure ApplyStandardSettings; override;
    procedure GetProgramInfo(var Author, ProductName, ProductVersion: string); override;
  end;

implementation

uses
  ConfigWizard;

{ TAppConfig }

// Allgemeine Aufgaben

procedure TAppConfig.RunConfigWizard;
begin
  frmConfigWizard := TfrmConfigWizard.Create(nil);
  frmConfigWizard.ShowModal(Self);
end;

procedure TAppConfig.ApplyStandardSettings;
begin
  fUserName := 'Standardname';
end;

procedure TAppConfig.GetProgramInfo(var Author, ProductName,
  ProductVersion: string);
begin
  Author := 'Sebastian Jänicke';
  ProductName := 'SJ Config Utils Demo';
  ProductVersion := '1.0';
end;

...
Bei RunConfigWizard muss ein eigener Einstellungswizard angezeigt werden, der den Benutzer auch nach dem Ort für die Einstellungen fragen sollte. Ihr könnt natürlich den der Demo übernehmen und anpassen.

Für das Auslesen und Speichern der Einstellungen gibt es ReadString, WriteString, und so weiter. Das sieht dann so aus:
Delphi-Quellcode:
procedure TAppConfig.LoadFromXml(Ini: IXMLDocument);
begin
  if AccessManager.InitReadLocation('Userinfo', sIniSectionOpenError) then
  begin
    fUserName := AccessManager.ReadString('Username', sIniValueNotFound);
  end;
end;

...
Dabei wird mit InitReadLocation ein Knoten einer XML-Datei, ein Schlüssel in der Registry oder eine Sektion einer INI geöffnet und dann darin die Werte gelesen.

Eine andere Möglichkeit ist, die übergebenen Objekte direkt zu verwenden um die XML-Datei usw. direkt auszulesen oder zu schreiben.

Welche Speicherarten verfügbar sind und welche Methoden dementsprechend implementiert werden müssen, wird in der Unit SJConfigUtils ganz oben per Compilerdirektive festgelegt.

Eine komplette Implementierung findet ihr in der mitgelieferten Demo.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat