[Lazarus] Having more than 32 elements in a set (TGridOptions of TCustomGrid)

Sven Barth pascaldragon at googlemail.com
Thu Nov 6 07:41:34 CET 2014


On 06.11.2014 04:43, Flávio Etrusco wrote:
>> Default values must be of ordinal, pointer or small set type (Delphi)
>> (See: http://docwiki.embarcadero.com/RADStudio/XE7/en/E2146_Default_values_must_be_of_ordinal,_pointer_or_small_set_type_%28Delphi%29)
>>
>> After you added the 33-rd option now SizeOf(TGridOptions) = 32 bytes.
>> Every option is stored as a bit, so you can have 256 (=32*8) options (I think).
>
> No, SizeOf(TGridOptions) = 4 (bytes) = 32 bits = 32 options.

If a 33rd option is added he's right:

=== code begin ===

program tsettest;

type
   TTest = (
     t1,
     t2,
     t3,
     t4,
     t5,
     t6,
     t7,
     t8,
     t9,
     t10,
     t11,
     t12,
     t13,
     t14,
     t15,
     t16,
     t17,
     t18,
     t19,
     t20,
     t21,
     t22,
     t23,
     t24,
     t25,
     t26,
     t27,
     t28,
     t29,
     t30,
     t31,
     t32,
     t33
   );

   TTests = set of TTest;

var
   t: TTests;
begin
   Writeln(SizeOf(t));
end.

=== code end ===

=== output begin ===

% ./tsettest
32

=== output end ===

Regards,
Sven




More information about the Lazarus mailing list