Хотя Барри четко ответил на ваш вопрос относительно атрибутов элементов перечисления, я сделаю удар по другому предложению. В вашем примере вы префикс каждого элемента enum с помощью «tod», как это принято в Delphi, поскольку элементы перечисления являются глобальными по объему (т. Е. Если в дополнение к элементам перечисления todABC у вас есть идентификатор todABC в области видимости, вы можете получить некоторые нечетное поведение).
Начиная с D2007 мы представили понятие «scoped enums», которое при включении требует, чтобы вы определили элемент перечисления с идентификатором самого перечисления. Например:
{$SCOPEDENUMS ON}
type
TTypeOfData = (ABC,DEF,GHI);
Потребуется обратиться к элементу ABC как TTypeOfData.ABC. Это позволяет использовать идентификаторы элементов с префиксом enum и не запускать риск возникновения конфликтов, поскольку элементы «привязаны» к перечислению. Любое перечисление, объявленное при включенном {$ SCOPEDENUMS}, будет вести себя таким образом.
Учитывая, что теперь вы можете безопасно использовать RTTI для получения фактических имен элементов перечисления в желаемом формате.
Хорошее объяснение на. Но IMO в этом случае они должны вызывать предупреждение «неподдерживаемой языковой функции», как это делает использование других недопустимых атрибутов. –