Забавное поведение D6 при работе с множествами
От: Евг. Белоусов Россия  
Дата: 09.07.03 10:13
Оценка:
Добрый день,
Недавно копался в простейшей вещи: работа с множествами.
Обнаружил весьма странное поведение, хотя и вполне понятное из физического представления множеств, но недокументированное в хелпе.


program prg;
type
  range=10..255;
    rangedset=set of range;
var
  s: rangedset;
begin
    s:=[0..12];
    if 0 in s then
      WriteLn('0 in set');
    if 9 in s then
      WriteLn('9 in set');
end;

Как вы думаете, что выведет такая программа, и какие элементы содержатся в множестве?

Правильный ответ :
программа выведет
9 in set

В множестве содержатся эл-ты 8,9,10,11,12.

Причем результат воспроизводится с {$OVERFLOWCHECKS ON}{$RANGECHECKS ON}
и с отладочной версией RTL.

С уважением, Евгений Белоусов.

PS Хотя все множества заданы константами, компилятор не выдает ни даже хинтов
по этому поводу.
... << RSDN@Home 1.1 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.