Mientras que Barry respondió claramente su pregunta con respecto a los atributos en los elementos enum, voy a echar un vistazo a otra sugerencia. De su ejemplo, está prefijando cada elemento enum con 'tod' como es tradicional en Delphi porque los elementos enum son de alcance global (es decir, si tuviera un identificador todABC en el alcance además de los elementos todABC enum, podría obtener algunos comportamientos extraños).
A partir de D2007, introdujimos la noción de "enums con ámbito" que, cuando está habilitada, requiere que califique el elemento enum con el identificador de la enumeración en sí. Por ejemplo:
{$SCOPEDENUMS ON}
type
TTypeOfData = (ABC,DEF,GHI);
Te solicitarán que hagas referencia al elemento ABC como TTypeOfData.ABC. Esto le permite usar identificadores de elemento enum sin prefijo y no corre el riesgo de tener conflictos ya que los elementos tienen "alcance" en la enumeración. Cualquier enum declarada mientras {$ SCOPEDENUMS} está habilitado se comportará de esta manera.
Dado que ahora puede usar el RTTI de forma segura para obtener los nombres de los elementos de enumeración reales en el formato que desee.
Good explanati en. Pero IMO en ese caso, deberían causar una advertencia de "función de idioma no admitida", como lo hace el otro atributo de atributo no válido. –