Zitat von
Apollonius:
Mit Records funktioniert das nicht, da die Feld-Namen nicht mehr im Kompilat auftauchen. Wenn du auf Klassen umsteigen würdest, könnte man das Problem mit Hilfe der
RTTI lösen.
Wie würde das denn ungefähr aussehen? Momentan wollte ich folgende Struktur nutzen:
Delphi-Quellcode:
type TDBconf=record
host:
string;
user:
string;
password:
string;
db:
string;
ident:
string;
end;
type
{ TInisettings }
TInisettings =
class(TObject)
private
public
LConfig:TDBconf;
constructor Create;
destructor Destroy;
override;
end;
constructor TInisettings.Create;
var Inicontrol:TInicontrol;
i:int;
idlist :
array[0..4]
of string = ('
host', '
user', '
password', '
db', '
ident');
id, sec :
string;
begin
Inicontrol:=TInicontrol.Create;
try
sec:='
local';
for id
in idlist
do
begin
Inicontrol.getId(sec,id,LConfig."id"); <-- die beiden Zeilen funktionieren nicht,
ShowMessage(LConfig."id"); <-- weiss ich. ging ums Prinzip... (php ist doch schön ;-)
end;
finally
Inicontrol.Free;
// ShowMessage(LConfig.host);
end;
end;
Wie wäre dann der Ansatz mittels Objecten? Einfach anstelle des records den Typ auf Object setzen und constructor/destructor hinzufügen und einfach weitermachen?
Und nochwas, warum bin ich nun im Lazarus-Forum? Ist doch eher ne allgemeine und Systemunabhängige Frage gewesen?!
Gruß
-C-