2010-11-15 5 views
2

J'ai écrit un delphi Numeric pour un C Enum pouvez-vous me répondre, où puis-je avoir une erreur? Y at-il quelque chose de mal?convertir un C Enum au 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 

et converti delphi ENUM:

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

Au moins le dernier ',' doit être retiré. –

+0

Qu'est-ce qui vous fait penser que vous avez fait une erreur? Décrivez le problème que vous rencontrez. –

Répondre

1

Cela semble bien, en dehors de l'élément en commentaire dans le milieu. Quel genre de problèmes avez-vous avec cela?

+0

pas mon problème isnot virgule je convertis un programme système en c à delphi et je pense que mon problème est enum type – micheal

+0

pas mon problème isnot virgule je convertis un programme système en c à delphi et je pense que mon problème est de type Enum? que pensez-vous - est deux structure même dans tous les paramètres, l'espace dans la mémoire et .... – micheal

1

Je n'ai aucune idée de ce que vous entendez par "a un problème", mais si je supprime la virgule après AttributeLoggedUtilityStream = $100 je peux compiler votre type converti.

11

En C une énumération est d'au moins 4 octets, vous pouvez utiliser la directive {$ MINENUMSIZE 4} dans Delphi pour obtenir la même chose. En dehors de cette dernière virgule, comme déjà mentionné, votre conversion est correcte. Bien qu'il soit parfois préférable de traduire une énumération en tant que constantes numériques puisque dans C une valeur enum et un entier sont interchangeables, ce qui n'est pas le cas en Delphi (vous pouvez bien sûr convertir une enum en un entier et vice versa).