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