On 7/9/2018 9:22 AM, Ryan Joseph wrote:
Could I do some RTL magic on a record to loop over its fields and set them to 
another record by name? In the example below I want to set all the fields in 
TRecA to matching named fields in TRecB. Just curious if we can do this 
automatically using RTL.

type
        TRecA = record
                a: string;
                b: string;
        end;

type
        TRecB = record
                a: string;
                b: string;
                c: integer;
                d: integer;
        end;


for field in recA.GetFields do
        recB.GetFieldByName(field.name).value := field.value
If you make sure that any variable of tRecB is declared first, you can use

Var RecB : tRecB;
       RecA : tRedA ABSOLUTE RecB;

Quite obviously, it doesn't work the other way around as tRecB is larger than tRecA...

Ralf

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to