i wrote a delphi Numeric for a C Enum can you answer me , where can i may had a mistake? is there anything wrong?
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
and converted delphi enum:
ATTRIBUTE_TYPE=( AttributeStandardInformation = $10,
AttributeAttributeList = $20,
AttributeFileName = $30,
AttributeObjectId = $40,
AttributeSecurityDescriptor = $50,
AttributeVolumeNam开发者_运维知识库e = $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,
);
In C an enum is at least 4 bytes, you can use the {$MINENUMSIZE 4} directive in Delphi to achieve the same.
Apart from that last comma, as already mentioned, your conversion is correct. Although sometimes it's better to translate an enum as numeric constants since in C an enum value and an integer are interchangeable which is not the case in Delphi (you can of course cast an enum to an integer and vice versa).
That looks right, aside from the commented-out element in the middle. What sort of problems are you having with it?
I have no idea what you mean with "has a problem", but if I remove the comma after AttributeLoggedUtilityStream = $100
I can compile your converted type.
精彩评论