I\'m attempting to use the enhanced RTTI features in Delphi XE or later, to read and write objects to XML. So far I\'ve been successful with integers, floats, strings, enum
I presume you are trying to save the value of a record-typed field of the runtime type of Self, yes?
You have to get the value of the field first, with FProp.GetValue(Self). Let's say you put that in a variable called FieldValue of type TValue. You can then save the fields of the record value as you wish, though you'll probably want to write a recursive procedure for it, as the fields of the record may themselves be fields. The field getter for records expects the address of the record (a pointer to its start) for symmetry with the setter; the setter expects the address rather than the value because otherwise there would be no easy way to modify a field "in situ" in another class or record, since records are otherwise passed around by value.
You could get that with FieldValue.GetReferenceToRawData, which will return a pointer to the start of the records stored inside the TValue.
Hopefully this gives you enough clues to continue.