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