将C Enum转换为delphi?

mic*_*eal 3 delphi

我为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中则不是这样(你当然可以将枚举转换为整数,反之亦然).