To się nazywało dokładnie typ okrojony (ang. Subrange Type), możesz o tym przeczytać np. tutaj, tutaj czy tutaj;
Chodzi tutaj ustalenie że zmienna a może przyjmować wartości z 1..100, czy sugestia dla kompilatora żeby dobrał sobie odpowiedni typ, który uwzględnia podany przedział, czy jak?
Jedno i drugie; Typ okrojony może przyjmować wartości z zadanego przedziału, a kompilator na podstawie ilości bajtów, jaką potrzeba do zapisania liczby ustala jego rozmiar;
Czyli np.:
TFoo = 0 .. 5; //rozmiar: 1 bajt
TFoo = 0 .. 255; //rozmiar: 1 bajt
TFoo = 0 .. 256; //rozmiar: 2 bajty
TFoo = -128 .. 127; //rozmiar: 1 bajt
i tak dalej, i tak dalej; Jednak typ okrojony nie może zajmować więcej, niż typ Integer
- w przeciwnym wypadku dostaniesz komunikat: [Error] XXX.dpr(X): Integer constant too large
;