开发者

convert a C Enum to the delphi?

开发者 https://www.devze.com 2023-01-24 23:02 出处:网络
i wrote a delphi Numeric for a C Enum can you answer me , where can i may had a mistake? is there anything wrong?

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号