[fpc-pascal] Are record fields zeroed on declaration of a record?
Bo Berglund
bo.berglund at gmail.com
Thu Oct 8 12:58:57 CEST 2020
On Thu, 8 Oct 2020 10:47:52 +0200 (CEST), Michael Van Canneyt via
fpc-pascal
<fpc-pascal at lists.freepascal.org> wrote:
>
>
>On Thu, 8 Oct 2020, Bo Berglund via fpc-pascal wrote:
>
>> I would like to know if data containers of type packed record are
>> zeroed when the item is declared?
>>
>> type
>> TMyRecord = packed record
>> AField1: byte;
>> AField2: word;
>> AField3: single;
>> AField4: boolean;
>> AField5: array[0..15] of Cardinal;
>> end;
>>
>> procedure SomeProc;
>> var
>> myRec: TMyRecord;
>> begin
>> ...
>>
>> Will random data fill myRec until I assign each field or will the
>> entire record be zeroed at this point?
>
>No, as with all local unmanaged variables it contains random data.
>The best you can do is add this as the first line:
>
>begin
> MyRec:=Default(TMyRecord);
>
>It will in effect zero out the record.
>
OK,
is it possible to define the TMyRecord with default values so that
when I do Default(TMyRecord) it will be non-zero defaults written
instead of zeros?
--
Bo Berglund
Developer in Sweden
More information about the fpc-pascal
mailing list