枚举类型集合按照位来存放的。如果集合大小是[0,8),占内存空间1个字节,大小是(8,16],占2个字节,(16,32)占4个字节,然后依次是每增加八个元素以内多用1个字节空间type TBit=(b1,b2,b3,b4,b5,b6,b7,b8); TBits=set of TBit; var Bits:TBits;bBit:byte absolute Bits;这样你就可以通过对Bits来访问设定每个二进制位,结果由bBit来访问其他类型集合就不太清楚了
集合本质是整数,通过位运算得知包含哪些元素。 A= Set of (a,b,c); 转换到二进制 001,111分别就表示[a],[a,b,c] 至于集合类型占几个字节由编译器决定. 集合不超过8个元素就占1个字节.不超过16个元素就占2字节. 超过16个元素就占4字节.
知道啦uses idGlobal;type TMySet=Set of 0..9;var i: Integer; S: TMySet; begin for i:=0 to 9 do begin s:=[i]; ShowMessage(IntToBin(Integer((@S)^))); end; end;
TBits=set of TBit;
var Bits:TBits;bBit:byte absolute Bits;这样你就可以通过对Bits来访问设定每个二进制位,结果由bBit来访问其他类型集合就不太清楚了
A= Set of (a,b,c);
转换到二进制
001,111分别就表示[a],[a,b,c]
至于集合类型占几个字节由编译器决定.
集合不超过8个元素就占1个字节.不超过16个元素就占2字节.
超过16个元素就占4字节.
i: Integer;
S: TMySet;
begin
for i:=0 to 9 do
begin
s:=[i];
ShowMessage(IntToBin(Integer((@S)^)));
end;
end;