Все привет. Читаю книгу "Дельфи. Полное руководство" Сухарев М.
И вот вопрос возник в книге описаны интервальные типы данных. В краце это подмножество с начальным и конечными значениями. Используется для ограничения вводимого диапазона данных. и распростроняется на 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 принимает значение выходящие из диапазона?