Yes, it does. Your above type in Delphi would be
TYPE
EnumOfUChars = (EnumValue1 = $10, EnumValue2 = $20);
However, where enums in C++ are simply aliases for int values, they are distinct types in Delphi. In other words, whereas in C++ you can do:
int c = EnumValue1;
you can't do that - directly - in Delphi. The above would have to be defined as
VAR C : INTEGER = ORD(EnumValue1);
where "ORD" is the Delphi equivalent (but not identical to) an int typecast in C++.
Likewise, the opposite direction:
C++: EnumOfUChars E = 0x22;
This can't be done (without violating the enum type) in Delphi, as the value $22 is not a valid enum value. You can, however, force it through:
Delphi: VAR E : EnumOfUChars = EnumOfUChars($22);
If you want to use binary values for enums in Delphi (which the above definition would suggest), you'll need to do so using a SET OF EnumOfUChars, as in:
C++ : EnumOfUChars C = EnumValue1 | EnumValue2;
Delphi: VAR C : SET OF EnumOfUChars = [EnumValue1,EnumValue2];
and to test:
C++ : if (C & EnumValue1)...
Delphi: IF EnumValue1 IN C THEN...
So, you can accomplish the same in Delphi with respect to enumerations, but the way you do it is different than in C++.