Ein Verbundtyp fasst immer Variablen zusammen.
Entweder deklarierst eine Modulvariable im Interface und verwendest ...
Delphi-Quellcode:
unit recs_intf;
interface
type TConfigRec =
record
type TB =
record
a : Integer;
b :
string;
end;
type TC =
record
a: Integer;
b :
string;
c :
string;
end;
public
c : TC;
b : TB;
end;
implementation
end.
und/oder versteckst die Konfiguration so halb
Delphi-Quellcode:
unit recs;
interface
uses recs_intf;
type TConfig =
record
conf : TConfigRec;
private
allowModify : Boolean;
end;
// Frei gestaltbar
procedure GetModifyableConfig(
var aTConfig: TConfig);
procedure ModifyConfig(aTConfig : TConfig);
//function ReadConfig : TConfig;
function TAppConfig : TConfigRec;
implementation
var IntConfig : TConfigRec;
function ReadConfig : TConfig;
begin
Result.conf:=IntConfig;
Result.allowModify:=False;
end;
procedure GetModifyableConfig(
var aTConfig: TConfig);
begin
aTConfig.conf:=IntConfig;
aTConfig.allowModify:=True;
end;
procedure ModifyConfig(aTConfig : TConfig);
begin
if aTConfig.allowModify
then IntConfig:= aTConfig.conf;
end;
// Die Funktion kann man noch rausziehen in ein eigenes Modul
function TAppConfig : TConfigRec;
begin
Result := ReadConfig.conf;
end;
initialization
end.
Billige Gedankenspende.
Es gibt keine Forward Deklaration für Records. Damit kann man kein ordentlichen Abstarkten Datentyp machen. Dafür kannst du dann zumindest lesend auf die Config zugreifen.
Delphi-Quellcode:
procedure test();
var
config_c_a: Integer;
config : TConfig;
begin
config_c_a:=TAppConfig.b.a;
GetModifyableConfig(config);
// SetTAppConfig(TConfig);
end;
Astrein ist das nicht. Von so etwas halt ich wenig bis gar nichts. Einfach
naja.
Weil ich das nicht verstehe und lieber bei einfachen Sachen bleibe.