Doing the same conceptual thing using different syntax does not seem right as generics, macros and other nice stuff become clumsy and too verbose.
See //======================================================== program project1; {$mode objfpc} type TRec= record A:array of integer; S:string; end; var R1,R2:TRec; begin SetLength(R1.A, 3); R1.A[0]:=1; R1.A[1]:=2; R1.A[2]:=3; R1.S:='123'; R2:=R1; // shallow copying <> full clone R2.A[0]:=10; R2.S[1]:='S'; // does not work as expected (no copy-on-write/cloning) writeln(R1.A[0]); // prints 10 writeln(R2.A[0]); // prints 10 // works fine writeln(R1.S[1]); // prints 1 writeln(R2.S[1]); // prints S end. //======================================================== BR, Denis _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal