Dank des Hinweises von Uwe war die Lösung nicht mehr schwer:
Delphi-Quellcode:
procedure TForm4.BitBtn3Click(Sender: TObject);
procedure GetFields(pValue: TClass);
var
rttiContext: TRttiContext;
rttiType: TRttiType;
attribute: TCustomAttribute;
rttiField: TRttiField;
begin
rttiContext := TRttiContext.Create;
try
rttiType := rttiContext.GetType(pValue);
Memo1.Clear;
for rttiField in rttiType.GetFields do
Memo1.Lines.Add(format('%s # %s # %s', [rttiField.Name, rttiField.FieldType.ToString, rttiField.ToString]));
finally
rttiContext.Free;
end;
end;
begin
GetFields(TTest);
end;
und das Resultat
Code:
Name1 # string # Name1: string @ 04
Alter # Integer # Alter: Integer @ 08
Mit
rttiField.FieldType.TypeKind
kann ich direkt auf den Datentyp zugreifen