[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