Ich würde Methode 2 benutzen. Im Gegensatz zu den anderen Möglichkeiten ist die nämlich auch safe, wenn man möglicherweise managed Felder im Record hat und diese unter Umständen schon irgendwie zwischen begin und dem Aufruf gesetzt wurden. Ein ZeroMemory (welches auch nur FillChar aufruft) schreibt nämlich einfach stumpf Nullen drüber. Das funktioniert für managed Felder also nur, wenn diese sowieso schon genullt sind.
Siehe
dieser SO Eintrag (und die verlinkte Antwort von Allen Bauer)
Mehr Informationen auch noch hier bzgl der Performance von Default() (in der Antwort von Arnaud):
http://stackoverflow.com/questions/1...delphi-at-once
(Nja, dank eines defaultparameters könnte man da eventuell tricksen).
Nö
Code:
E2471 Possibly parameterless constructors not allowed on record types