Я использую запись, состоявшую из строк, булевских переменных, целых чисел, валют и массивов других записей в методе класса. Я хотел бы рекурсивно инициализировать все поля типа примитива к пустому/ложному/нулевому. Delphi, кажется, не делает это по умолчанию. Существует ли простой способ выполнить это, которое не включает доступ к каждому полю по имени и установку его вручную?
Вы можете использовать любую из следующих конструкций (где Foo - запись).
FillChar(Foo, SizeOf(Foo), 0);
ZeroMemory(@Foo, SizeOf(Foo));
Из сообщения Аллена Бауэра
При рассмотрении наиболее распространенных вариантов использования для FillChar, чтобы определить использует ли большинство людей FillChar для на самом деле заполнить память персонажем данные или просто используйте их для инициализации память с некоторым заданным байтовым значением, мы обнаружил, что именно во втором случае преобладали в его использовании, а не в бывший. При этом мы решили оставить FillChar байт-ориентированный.
Обратите внимание, что вы должны использовать Finalize перед FillChar или ZeroMemory в некоторых случаях .