Registriert seit: 8. Jan 2007
472 Beiträge
|
AW: Feldwerte eines Records über den Feldindex abrufen
11. Sep 2023, 22:33
Ich benötige über den Index den Namen und Feldwert.
Delphi-Quellcode:
function GetFieldNameAndValue(pmTypeInfo: Pointer; pmInstance: Pointer; pmFieldIdx: Integer; out pmoFieldName: String; out pmoFieldValue: TValue): Boolean;
var
rttiType: TRttiType;
rttiFields: TArray<TRttiField>;
begin
if (pmTypeInfo <> Nil)
and (pmInstance <> Nil)
and (pmFieldIdx >= 0) then
begin
rttiType := TRttiContext.Create.GetType(pmTypeInfo);
if rttiType <> Nil then
begin
rttiFields := rttiType.GetFields;
if Length(rttiFields) > pmFieldIdx then
begin
pmoFieldName := rttiFields[pmFieldIdx].Name;
pmoFieldValue := rttiFields[pmFieldIdx].GetValue(pmInstance);
Exit(True);
end;
end;
end;
Result := False;
end;
var
rec: TMyRecord;
fieldName: String;
fieldValue: TValue;
begin
rec.FeldC := 'Test';
if GetFieldNameAndValue(TypeInfo(TMyRecord), @rec, 2, fieldName, fieldValue) then
ShowMessage(Format('Name: %s, Value: %s', [fieldName, fieldValue.ToString]));
end;
Bis bald...
Thomas
|
|
Zitat
|