Перечисляемый тип
Если для повышения наглядности программы требуется в явном виде указать множество всех возможных значений выражений некоторого типа, используют перечисляемый тип. Значения перечисляемого типа представляют собой идентификаторы.
Допустим, требуется определить тип, выражающий возможные цвета светофора. Для этого объявляют тип
TLight = (Red, Yellow, Green);
Переменная типа TLight может принимать только те значения, которые перечислены в скобках.
Существует небольшая проблема: идентификаторы, используемые для объявления перечисляемого типа, не должны быть задействованы в программе, в том числе, и для объявления другого перечисляемого типа. Допустим, если требуется объявить два типа, один из которых содержит названия цветов автомобильного светофора, а другой – железнодорожного, объявление вида:
TAutoLight = (Red, Yellow, Blue);
TRailLight = (White, Blue, Red, Yellow, Green);
вызовет ошибку, так как идентификаторы Red, Yellow, Green присутствуют сразу в двух типах.
Для преодоления такой трудности идентификаторы значений перечисляемого типа предваряют префиксом из двух или трёх строчных латинских букв. В нашем случае объявление типов будет таковым:
TAutoLight=(alRed,alYellow,alBlue);
TRailLight=(rlWhite,rlBlue,rlRed,rlYellow,rlGreen);
Синтаксически различные ALRED и RLRED, тем не менее, сохраняют наглядность описания программы, что и является решением проблемы.