Es sind übrigens ordinale Typen, nicht ordinär.
Ein enum kann auch Werte außerhalb des Wertebereichs haben. Es ist deine Aufgabe, das zu verhindertn.
IIRC sind enums übrigens normalerweise keine Integers, sondern Cardinals. Welcher Cardinal hängt von der Anzahl der Elemente ab. Bis 256 Elemente ist es ein Byte, bis 65536 Elemente ein Word usw. Wobei es vermutlich selten Fälle gibt, in denen 65536 Elemente überschritten werden.
Das gilt natürlich nur für enums, denen nicht spezielle Werte zugewiesen wurden. (Also z.B. (bla=42,
wuppdi=123456)). Außerdem kann es sein, dass der Compiler in records oder Klassen je nach Ausrichtungsoptionen immer ein LongWord (d.h. 32 Bit Cardinal) draus macht.