Solange man nicht anfängt blanke Zahlen in Enum-Variablen zu quetschen sehe ich in Delphi die Notwendigkeit dafür noch nicht ganz.
Deine Bedingung prüft nur ob die Zahl zwischen 0 und dem höchsten ordinalen Enum-Wert ist. Das
Enum.IsDefined(..) in .NET prüft ob der übergebene String oder Ordinalwert für die Enumeration gültig ist. Hast du beispielsweise ein Enum
TEnum = (uno = 4, dos = 8, tres = 16);
und quetscht da eine 5 rein würde dein Code meinen das wäre ein völlig gültiger Wert.