2010-11-15 100 views
2

我寫了一個C的Enum的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 

並轉換的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, 
    ); 
+4

至少最後一個','必須被刪除。 – 2010-11-15 13:54:14

+0

是什麼讓你覺得你犯了一個錯誤?描述你有什麼問題。 – 2010-11-15 15:05:49

回答

1

這看起來右,除了中間的註釋的元素。你有什麼樣的問題?

+0

沒有我的問題是不是逗號我將c轉換爲delphi系統程序,我認爲我的問題是在枚舉類型 – micheal 2010-11-15 14:08:25

+0

沒有我的問題是不是逗號我將c中的系統程序轉換爲德爾福,我認爲我的問題是在枚舉類型?你怎麼看 - 在所有參數中都有兩個相同的結構,內存空間和.... – micheal 2010-11-15 14:09:09

1

我不知道你的意思是「有問題」,但如果我在AttributeLoggedUtilityStream = $100之後刪除逗號,我可以編譯你的轉換類型。

11

在C中,enum至少有4個字節,你可以使用Delphi中的{$ MINENUMSIZE 4}指令來達到相同的效果。

除了最後一個逗號,如前所述,您的轉換是正確的。儘管有時最好將枚舉轉換爲數字常量,因爲在C中,枚舉值和整數是可以互換的,這在Delphi中並非如此(當然,您可以將枚舉枚舉爲整數,反之亦然)。