[fpc-pascal] Bitpacked bug?

Luca Olivetti luca at ventoso.org
Sun May 12 18:21:22 CEST 2019


El 12/5/19 a les 17:58, Victor Campillo ha escrit:
> Hi,
> 
> I think I found a bug with bitpackeds records.
> 
> I have the next record.
> 
>    TBitpacked = packed record
>      Case Integer Of
>        0 : (Word :  Word);
>        1 : (Byte :  array [0..1] of Byte);
>        2 : (Boolean: bitpacked Array [0..15] of boolean);
>        3 : (Bit : bitpacked Record
>            case integer of
>              0: (bit0: Boolean);
>              1: (bit1: Boolean);
>              2: (bit2: Boolean);
>              3: (bit3: Boolean);
>              4: (bit4: Boolean);
>              5: (bit5: Boolean);
>              6: (bit6: Boolean);
>              7: (bit7: Boolean);
>              8: (bit8: Boolean);
>              9: (bit9: Boolean);
>              10: (bit10: Boolean);
>              11: (bit11: Boolean);
>              12: (bit12: Boolean);
>              13: (bit13: Boolean);
>              14: (bit14: Boolean);
>              15: (bit15: Boolean);
>            end);
>      end;

With that last case, aren't you just defining one bit in the bitpacked 
record?
In that case

>    pp.Word:=0;
>    pp.Bit.bit1:=true;
>    writeln(pp.Byte[0]); // This prints 1 -- WRONG
>    writeln(pp.Boolean[0]); // This prints True -- WRONG
>    writeln(pp.Boolean[1]); // This prints False -- WRONG

this would be correct.


Bye
-- 
Luca



More information about the fpc-pascal mailing list