Here is a real-world example from the winnt.h, which is not possible to translate to a native enumerated type:
// // Start Type // #define SERVICE_BOOT_START 0x00000000 #define SERVICE_SYSTEM_START 0x00000001 #define SERVICE_AUTO_START 0x00000002 #define SERVICE_DEMAND_START 0x00000003 #define SERVICE_DISABLED 0x00000004 // // // typedef enum _CM_SERVICE_LOAD_TYPE { BootLoad = SERVICE_BOOT_START, SystemLoad = SERVICE_SYSTEM_START, AutoLoad = SERVICE_AUTO_START, DemandLoad = SERVICE_DEMAND_START, DisableLoad = SERVICE_DISABLED } SERVICE_LOAD_TYPE;
The ordinal values of the items in the enumeration SERVICE_LOAD_TYPE depend on the constants declared above it. This is not possible in Delphi. The only way to translate it is:
// // Start Type // CONST SERVICE_BOOT_START = $00000000; SERVICE_SYSTEM_START = $00000001; SERVICE_AUTO_START = $00000002; SERVICE_DEMAND_START = $00000003; SERVICE_DISABLED = $00000004; // // // CONST BootLoad = SERVICE_BOOT_START; SystemLoad = SERVICE_SYSTEM_START; AutoLoad = SERVICE_AUTO_START; DemandLoad = SERVICE_DEMAND_START; DisableLoad = SERVICE_DISABLED; TYPE TServiceLoadType = DWord;
Back to contents
本文地址:http://com.8s8s.com/it/it6024.htm