Показать сообщение отдельно
  #1  
Старый 02.08.2008, 16:41
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию Интервальные типы даных

Все привет. Читаю книгу "Дельфи. Полное руководство" Сухарев М.
И вот вопрос возник в книге описаны интервальные типы данных. В краце это подмножество с начальным и конечными значениями. Используется для ограничения вводимого диапазона данных. и распростроняется на Integer и Char переменные. Но вот казус небольшой.

Код:
type
 TInt = 0..15;

var
 r: TInt;
...
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
for i:=0 to 20 do
try
 r:=i;
finally
 ListBox1.Items.Add(inttostr(r));
end;
end;

по сути своей код должен добавить в ЛистБокс значения от 0 до 15 т.к. 16 - 20 не входит в диапазон интервального типа. Но программа выполняется без ошибок и присваевает переменной r значения с 16 по 20, что вообще то не должно быть.

Если же попытаться выполнить вот этот кусок кода

Код:
type
 TInt = 0..15;

var
 r: TInt;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
try
 r:=20;
finally
 ListBox1.Items.Add(inttostr(r));
end;
end;

Программа соответственно отругается что переменной r присваемое значение не входит в диапазон...

Вопрос: Интересно почему же в цикле переменная r принимает значение выходящие из диапазона?
Ответить с цитированием