Einzelnen Beitrag anzeigen

Reinhard Kern

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

Re: Globale Vriablen, Record´s oder Objecte Konfigurationsda

  Alt 11. Apr 2009, 14:19
Hallo Jens,

eine mögliche Art, das mit einer Klasse anzugehen (die wird für jedes Programm benötigt und beruht auf einer Klassenhierarchie, die allen gemeinsam ist):

Delphi-Quellcode:
{ Deklaration }
  type

  TBPMLogSettings = class (TRKIniSettingTable)
    public
    Station_Node : TRKiniSettingValue; { group }
    Station_Description : TRKiniSettingValue; { group }
    Station_CommPort : TRKiniSettingValue; { group }
    Station_USBSerial : TRKiniSettingValue; { group }
    QSDoc_Path : TRKiniSettingValue;

.....

{ Create }
constructor TBPMLogSettings.CreateTable (IC : TRKIniClass);
var CSection : ShortString;

begin
inherited Create (IC);

with BLMainForm do
  begin
  CSection := 'Station';
  Station_Node := TRKiniSettingValue.Create_Integer (-maxStationNo,CSection,
        'Node',0, [] ,self);
  Station_Description := TRKiniSettingValue.Create_String (-maxStationNo,CSection,
        'Description','', [] ,self);
  Station_CommPort := TRKiniSettingValue.Create_Integer (-maxStationNo,CSection,
        'CommPortNumber',0, [] ,self);
  Station_USBSerial := TRKiniSettingValue.Create_String (-maxStationNo,CSection,
        'USBSerial','', [] ,self);
  QSDoc_Path := TRKiniSettingValue.Create_String (1,'QS-Doc',
        'Path','', [] ,self);

....

{ Wert holen }
fTimeBase := BPMLogSettings.Station_TimeBase.GetInteger (1);
Erklärung:

Es gibt für jedes Programm eine Klasse XYZLogSettings, in der ein Parameter als TRKiniSettingValue deklariert wird. Im Konstruktor dieser Klasse wird durch einen Create-Aufruf für jeden Parameter festgelegt, um was für einen Type es sich handelt (Bool,Integer,Real,String,Binary,Windowposition,Fo nt,Color...), welcher Default und wenn möglich auch (vorletzter Parameter) Controls zum Lesen und Schreiben, für die meisten Typen ein array of TEdit.

Im Regelfall ist das meiste damit erledigt: Alles was in XYZLogSettings deklariert ist, kann am Programmbeginn mit ReadAllValues gelesen werden, und geänderte Werte werden am Programmende mit SaveAllValues in die Ini-Datei oder Registry zurückgespeichert.

Das mit den Gruppen ist noch eine weitere Arbeitserleichterung: mit dem Wert 10 werden 10 Werte definiert nach dem Muster Section - Key1 - Key2 ... Key10, mit dem Wert -10 nach dem Muster Section1 - Key, Section2 - Key usw. einfache Werte haben eben eine 1.

Es gibt natürlich noch viel mehr Möglichkeiten, aber das gehört nicht hierher.

Gruss Reinhard
  Mit Zitat antworten Zitat