Making copy of a record is simple, because records are value types in Delphi, similar to integers, floating-point numbers, and booleans. We can just assign one variable of a record type to another and the compiler will make a copy:
var a, b: TSomeRecord; begin a.Initialize; b := a; // b now contains same data as aend;
There are limitations to this approach, and they are best explained with an example. In the Prototype folder of this chapter's code, you'll find the project PrototypeRecord, which demonstrates simplicity, and problems, with record cloning.
In the unit Prototype.Rec, you'll find the definition of a record type TCloneableRec that contains fields of different types: string, integer, two kinds of arrays, interface, ...