Ich glaub du hast einen Bug in deinem Source. Denn du checkst den FieldType bevor du GetField machst?
In einem Beispiel funktioniert das wie erwartet:
Delphi-Quellcode:
type
TMyRecord = record
Value: Integer;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
item: TMyRecord;
field: TRttiField;
t: TRttiType;
c: TRttiContext;
begin
t := c.GetType(TypeInfo(TMyRecord));
field := t.GetField('Value');
field.SetValue(@item, TValue.From(42));
ShowMessage(IntToStr(item.Value));
end;