, -, , , , "".
Delphi 256 255, , , :
TEnum = (a, b, c=255);
TSet = set of TEnum;
TSet 256 , 3 . ( , "a" 0, NOT 1!)
, sizeof() , , , , .
TEnum = (a, b, c=255);
TSet = set of TEnum;
>>> sizeof(TSet) = 32
TEnum = (a, b, c);
TSet = set of TEnum;
>>> sizeof(TSet) = 1
, Delphi, , , #, Delphi, / - .
, , RTTI Delphi Delphi ( -1), GetEnumValue):
enumValue := TEnum( GetEnumValue(TypeInfo(TEnum), sEnumMemberName) );
if Ord(enumValue) = -1 then
raise Exception.Create('Invalid enum value' + sEnumMemberName);
Include(setVar, enumValue);
GetEnumValue(), GetEnumName() TypInfo.
, , # ( ), Delphi (, , ), , , , , n- .
, , # Delphi .
, = , , # Delphi, , , , :
:
enumValues: array of Byte;
setVar: TSet; // set of TEnum
for i := 0 to Length(enumValues) do
Include(setVar, TEnum(enumValues[i]));