首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将C枚举转换为delphi?

将C枚举转换为delphi?
EN

Stack Overflow用户
提问于 2010-11-15 21:46:51
回答 3查看 2.3K关注 0票数 3

我为一个C枚举写了一个delphi Numeric,你能回答我吗,我哪里可能出错了?有什么问题吗?

C:

代码语言:javascript
运行
复制
 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枚举:

代码语言:javascript
运行
复制
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,
    );
EN

回答 3

Stack Overflow用户

发布于 2010-11-15 22:14:50

在C语言中,枚举至少是4个字节,你可以在Delphi中使用{$MINENUMSIZE 4}指令来实现同样的目的。

除了前面提到的最后一个逗号,您的转换是正确的。尽管有时将枚举转换为数字常量更好,因为在C中枚举值和整数是可以互换的,而在Delphi中则不是这样(当然,您可以将枚举转换为整数,反之亦然)。

票数 12
EN

Stack Overflow用户

发布于 2010-11-15 21:53:21

除了中间被注释掉的元素之外,它看起来是对的。你对它有什么问题?

票数 1
EN

Stack Overflow用户

发布于 2010-11-15 21:54:40

我不知道你说的“有问题”是什么意思,但是如果我去掉AttributeLoggedUtilityStream = $100后面的逗号,我就可以编译你转换的类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4184932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档