Erst mal Danke für den Tip.
Mit propertys wollte ich eigentlich nicht arbeiten.
Ich habe zwischenzeitlich weiter probiert und habe diese Lösung
angewendet.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var Obj: TObject; context: TRttiContext; typinfo: TRttiType; field: TRttiField; s : string; begin lst1.Items.Clear; context := TRttiContext.Create; typinfo := context.GetType(Data.ClassInfo); for field in typinfo.GetFields do begin typinfo := field.FieldType; s := ''; if typinfo <> nil then s := typinfo.Name; lst1.Items.Add(field.Name + ' ' + s ); end; context.Free end; |
Mit
if UpperCase(field.Name) = 'BEZEICHNUNG' then
l := field.GetValue(Data).AsString;
kann ich den Inhalt der Variablen auslesen. Das funktioniert auch.
Was ich noch suche ist die Gegenrichtung.
Also
if UpperCase(field.Name) = 'BEZEICHNUNG' then
field.SetValue(Data , Value);
Hier habe ich noch ein Problem mit dem Handling von TValue;
Gruß
Peter