Hallo!
Ist es möglich, über Eigenschaften einer abgeleiteten Klasse zu iterieren, dabei festzustellen ob eine Eigenschaft eine Variable eines bestimmten Typs ist und diese Variable dann einer lokalen Prozedurvariable zuzuweisen? Hier ein Phantasie-Beispiel:
Code:
TRecordTyp = record
Daten: String;
Nummer: Integer;
end;
TElternKlasse = class
protected
procedure Iterieren;
end;
TKindKlasse = class(TElternKlasse)
private
FRecord1: TRecordTyp;
FRecord2: TRecordTyp;
public
property Record1: TRecordTyp read FRecord1 write FRecord1;
property Record1: TRecordTyp read FRecord1 write FRecord1;
end;
procedure TElternKlasse.Iterieren;
var
I: Integer;
TR: TRecordTyp;
begin
for I:= 0 to Self.PropertyCount - 1 do begin
if Self.Properties[I] is TRecordTyp then begin
TR:= TRecordTyp(Self.Properties[I]);
with TR do begin
// ..
end;
end;
end;
end;
Das Ganze ist wirklich nur ein Phantasiegebilde. Ziel ist, in der Elternklasse oder irgendeiner anderen Prozedur über die Eigenschaften der Kindklasse zu iterieren. In meinem Fall gibt es einen ganzen Berg von Nachfahren, die alle unterschiedlich benannte Eigenschaften des selben Record-Typs besitzen. Die müsste ich finden (ohne die genaue Deklaration der Nachfahrklasse zu kennen) und damit arbeiten können.
Ist sowas überhaupt möglich?