Enums sind Ordinaltypen, die haben keine Methoden
Mann hätte einfach nur die Class/Record-Methoden auch noch für interfaces und normale Typen freigeben müssen.
Der Sinn ist wohl einfach nur, daß das "Array" der ValueNamen keine Leerstellen zuläßt und man nicht auf die Idee gekommen ist, an den entsprechenden Stellen einen DummyNamen einzufügen ... stattdessen erstellt der Compiler einfach diese info nicht.
Und weil man dann den Wert in der
RTTI-Funktion nicht prüft (
Assigned), sondern gleich direkt versucht auf ein Feld des InfoRecords zuzugreifen, schlägt einem dann eine natürlich eine Zugriffsverletzung an Adresse $000000xx entgegen.
PS: Das ist ein Problem, welches seit unzähligen Jahren bekannt ist, aber welches dennoch nicht behoben wurde, obwohl die Variante mit den Dummywerte hätte bestimmt leicht angepaßt werden können.