我为一个C枚举写了一个delphi Numeric,你能回答我吗,我哪里可能出错了?有什么问题吗?
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
和转换后的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,
);
发布于 2010-11-15 14:14:50
在C语言中,枚举至少是4个字节,你可以在Delphi中使用{$MINENUMSIZE 4}指令来实现同样的目的。
除了前面提到的最后一个逗号,您的转换是正确的。尽管有时将枚举转换为数字常量更好,因为在C中枚举值和整数是可以互换的,而在Delphi中则不是这样(当然,您可以将枚举转换为整数,反之亦然)。
发布于 2010-11-15 13:53:21
除了中间被注释掉的元素之外,它看起来是对的。你对它有什么问题?
发布于 2010-11-15 13:54:40
我不知道你说的“有问题”是什么意思,但是如果我去掉AttributeLoggedUtilityStream = $100
后面的逗号,我就可以编译你转换的类型。
https://stackoverflow.com/questions/4184932
复制相似问题