Hello,

I'm trying to convert c header code from "Windows Mobile API 5" to pascal and I'm getting wrong size of converted record:

original c header:

typedef struct _DDPIXELFORMAT
{
    DWORD       dwSize;
    DWORD       dwFlags;
    DWORD       dwFourCC;
    union
    {
        DWORD   dwRGBBitCount;
        DWORD   dwYUVBitCount;
        DWORD   dwAlphaBitDepth;
    };
    union
    {
        DWORD   dwRBitMask;
        DWORD   dwYBitMask;
    };
    union
    {
        DWORD   dwGBitMask;
        DWORD   dwUBitMask;
    };
    union
    {
        DWORD   dwBBitMask;
        DWORD   dwVBitMask;
        };
    union
    {
        DWORD   dwRGBAlphaBitMask;
    };

} DDPIXELFORMAT, * LPDDPIXELFORMAT;

and my pascal conversion:

PDDPixelFormat = ^TDDPixelFormat;
  _DDPIXELFORMAT = record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwFourCC: DWORD;
    case Integer of
      0: (
          dwRGBBitCount : DWORD;
          dwYUVBitCount : DWORD;
          dwAlphaBitDepth : DWORD;
          );
      1: (
          dwRBitMask : DWORD;
          dwYBitMask : DWORD;
          );
      2: (
          dwGBitMask : DWORD;
          dwUBitMask : DWORD;
          );
      3: (
          dwBBitMask : DWORD;
          dwVBitMask : DWORD;
          );
      4: (
          dwRGBAlphaBitMask: DWORD;
         );
  end;
  DDPIXELFORMAT = _DDPIXELFORMAT;
  TDDPixelFormat = _DDPIXELFORMAT;


embedded visual c++ 4 returns sizeof(_DDPIXELFORMAT) = 32

free pascal 2.2.2 arm/wince target returns sizeof(_DDPIXELFORMAT) = 24

When I retrive these structure from Windows, field dwSize = 32

Where is problem? Maybe I shuld use special compiler directive or switch?

Michal

p.s. sorry for my bad english
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to