[fpc-pascal] sizeof TTypeKind?
Sven Barth
pascaldragon at googlemail.com
Sat Mar 21 16:15:18 CET 2020
Am 21.03.2020 um 08:47 schrieb Ryan Joseph via fpc-pascal:
>
>> On Mar 21, 2020, at 9:39 AM, Ryan Joseph via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
>>
>> I'm going to loop through the fields of the record and get the size of each
>> field so I can serialize the record. Am I not on the right track?
> No answers on this so I'm thinking maybe I need to use TManagedField^.FldOffset to get the information I need about the field size. Is that correct way to get the field size using record RTTI?
For the primitve types you need to know the sizes at compile time (e.g.
SizeOf(Word), SizeOf(LongInt), etc.) and check what type the field has
using the field list in the record's RTTI. You also have to keep in mind
that some types are grouped. E.g. tkInteger is for all integer types
that are smaller than 64-bit. The real type is then available as
TTypeData.OrdType and you need to handle that size accordingly. For
structured types like records the size is contained in the RTTI. The
FldOffset field is important to get the correct offset of a field,
because padding might be involved depending on the platform (except if
your record is "packed").
Regards,
Sven
More information about the fpc-pascal
mailing list