Re[2]: Забавное поведение D6 при работе с множествами
От: Евг. Белоусов Россия  
Дата: 09.07.03 11:48
Оценка: 11 (1)
Здравствуйте, S-SH, Вы писали:

>> вполне понятное из физического представления множеств


SS>Не догоняю, можно здесь поподробнее, почему понятное?

Множество представляется в delphi как массив длиной от 1 до 32 байтов, в зависимости от типа, на котором оно конструируется.
Например sizeof(set of byte)=32, sizeof(set of 1..2)=1.
Понятно, что чем больше значений в базовом типе, тем больше байтов занимает множество.
Вычисляется размер множества следующим образом:
(maxval div 8) - (minval div 8) + 1

При этом, так как компилятор размещает множество в целом кол-ве байтов,
то множеством set of minval..maxval можно физически представить значения от
(minval div 8)*8 до ((maxval div 8)+1)*8-1

То есть в вышеприведенном примере мы получаем, что для rangedset создается
массив из 31 байта, который физически может содержать эл-ты от 8 до 255.
И любой из этих эл-тов можно добавить в множество, даже неверные с точки зрения логики 8 и 9.

С уважением, Евгений Белоусов.
... << RSDN@Home 1.1 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.