Рассмотрим:
{$R+}
i:= 1;
While i > 0 do
i:= i + 1;
ShowMessage(IntToStr(i));
Если я объявляю i
как Byte, Word, Shortint или TinyInt, я получаю ошибку проверки диапазона, как и ожидалось.
Если я объявляю i
как LongWord, Cardinal, Integer, LongInt или Int64, он просто проходит цикл while и получает значение отрицательного или 0, которое i
получает, когда вы передаете верхнюю границу.
Не поддерживает ли Delphi 7 проверку диапазона для 32-битных и 64-битных номеров?