这个结构在DELPHI中要怎么定义
typedef struct _DEVICE_MEDIA_INFO {
    union {
        struct {
            LARGE_INTEGER Cylinders;
            STORAGE_MEDIA_TYPE MediaType;
            DWORD TracksPerCylinder;
            DWORD SectorsPerTrack;
            DWORD BytesPerSector;
            DWORD NumberMediaSides;
            DWORD MediaCharacteristics; // Bitmask of MEDIA_XXX values.
        } DiskInfo;        struct {
            LARGE_INTEGER Cylinders;
            STORAGE_MEDIA_TYPE MediaType;
            DWORD TracksPerCylinder;
            DWORD SectorsPerTrack;
            DWORD BytesPerSector;
            DWORD NumberMediaSides;
            DWORD MediaCharacteristics; // Bitmask of MEDIA_XXX values.
        } RemovableDiskInfo;        struct {
            STORAGE_MEDIA_TYPE MediaType;
            DWORD   MediaCharacteristics; // Bitmask of MEDIA_XXX values.
            DWORD   CurrentBlockSize;
        } TapeInfo;
    } DeviceSpecific;

解决方案 »

  1.   

    TDiskInfo = record
         Cylinders: LARGE_INTEGER;
         MediaType: STORAGE_MEDIA_TYPE;
         TracksPerCylinder: DWORD;
         SectorsPerTrack: DWORD;
         BytesPerSector: DWORD ;
         NumberMediaSides: DWORD ;
         MediaCharacteristics: DWORD; // Bitmask of MEDIA_XXX values.
       end;   TRemovableDiskInfo = record
         Cylinders: LARGE_INTEGER;
         MediaType: STORAGE_MEDIA_TYPE;
         TracksPerCylinder: DWORD;
         SectorsPerTrack: DWORD;
         BytesPerSector: DWORD;
         NumberMediaSides: DWORD ;
          MediaCharacteristics: DWORD ; // Bitmask of MEDIA_XXX values.
       end;   TapeInfo = record
         MediaType: STORAGE_MEDIA_TYPE;
         MediaCharacteristics: DWORD; // Bitmask of MEDIA_XXX values.
         CurrentBlockSize: DWORD;
       end;   TUnion = record
         DiskInfo: TDiskInfo;
         RemovableDiskInfo: TRemovableDiskInfo;
         apeInfo: TapeInfo;
       end;  _DEVICE_MEDIA_INFO = record
        UionName: TUnion
      end;
      

  2.   

    D中没有union这个功能。
    用指针能实现。
      

  3.   

    type DiskInfo = record
    case Integer of: // 这个相当于UNION
      0:
      1:
      2:
     
    end;
    type RemovableDiskInfo = record...
    end;
    type TapeInfo = recordend;type DeviceSpecific = record
      di:DiskInfo;
      rdi:RemovableDiskInfo;
      ti:TapeInfo;
    end;
      

  4.   

    Pascal 里变体记录 =C里的union, 样式如 beyondtkl(大龙驹<逝追.弗瑞德>) 所言