Registriert seit: 8. Jan 2007
472 Beiträge
|
AW: Feldwerte eines Records über den Feldindex abrufen
11. Sep 2023, 17:12
Gibt es eine RTTI Methode um dessen Wert über seinen Feldindex abzurufen?
Delphi-Quellcode:
function GetFieldValue(pmTypeInfo: Pointer; pmInstance: Pointer; pmFieldIdx: Integer): TValue;
begin
if (pmTypeInfo <> Nil)
and (pmInstance <> Nil)
and (pmFieldIdx >= 0) then
begin
var rttiType: TRttiType := TRttiContext.Create.GetType(pmTypeInfo);
if rttiType <> Nil then
begin
var rttiFields: TArray<TRttiField> := rttiType.GetFields;
if Length(rttiFields) > pmFieldIdx then
Exit(rttiFields[pmFieldIdx].GetValue(pmInstance));
end;
end;
Result := TValue.Empty;
end;
var
rec: TMyRecord;
begin
rec.FeldC := 'Test';
ShowMessage(GetFieldValue(TypeInfo(TMyRecord), @rec, 2).ToString);
Bis bald...
Thomas
Geändert von mytbo (11. Sep 2023 um 17:33 Uhr)
Grund: Fehlerabfrage hinzugefügt
|