我为C Enum写了一个delphi数字你能回答我,我在哪里可能有错?有什么不对的吗?
C:
typedef enum {
AttributeStandardInformation = 0x10,
AttributeAttributeList = 0x20,
AttributeFileName = 0x30,
AttributeObjectId = 0x40,
AttributeSecurityDescriptor = 0x50,
AttributeVolumeName = 0x60,
AttributeVolumeInformation = 0x70,
AttributeData = 0x80,
AttributeIndexRoot = 0x90,
AttributeIndexAllocation = 0xA0,
AttributeBitmap = 0xB0,
AttributeReparsePoint = 0xC0,
AttributeEAInformation = 0xD0,
AttributeEA = 0xE0,
AttributePropertySet = 0xF0,
AttributeLoggedUtilityStream = 0x100
} ATTRIBUTE_TYPE
Run Code Online (Sandbox Code Playgroud)
并转换为delphi枚举:
ATTRIBUTE_TYPE=( AttributeStandardInformation = $10,
AttributeAttributeList = $20,
AttributeFileName = $30,
AttributeObjectId = $40,
AttributeSecurityDescriptor = $50,
AttributeVolumeName = $60,
AttributeVolumeInformation = $70,
AttributeData = $80,
//AttributeData1 = $0, // has a problem
AttributeIndexRoot = $90,
AttributeIndexAllocation = $A0,
AttributeBitmap = $B0,
AttributeReparsePoint = $C0,
AttributeEAInformation = $D0,
AttributeEA = $E0,
AttributePropertySet = $F0,
AttributeLoggedUtilityStream = $100,
);
Run Code Online (Sandbox Code Playgroud)
Rem*_*mko 12
在C中,枚举至少为4个字节,您可以使用Delphi中的{$ MINENUMSIZE 4}指令来实现相同的目的.
除了最后一个逗号,如前所述,您的转换是正确的.虽然有时最好将枚举转换为数字常量,因为在C中,枚举值和整数是可互换的,而在Delphi中则不是这样(你当然可以将枚举转换为整数,反之亦然).