c语言和vc语言能转换成delphi吗,Delphi与C语言类型转换对照

When converting C function prototypes to Pascal equivalent declarations, it's important to substitute the C function and argument types with the correct Pascal types. I often use a Type Translation Table for this, like the following in table 1 (optional parts on the C-side are noted between square brackets):

C/C++ Type

ObjectPascal Type

unsigned short [int]

Word

[signed] short [int]

SmallInt

unsigned [int]

Cardinal { 3.25 fix }

[signed] int

Integer

UINT

LongInt { or Cardinal }

WORD

Word

DWORD

LongInt { or Cardinal }

unsigned long

LongInt { or Cardinal }

unsigned long int

LongInt { or Cardinal }

[signed] long

LongInt

[signed] long int

LongInt

char

Char

signed char

ShortInt

unsigned char

Byte

char*

PChar

LPSTR or PSTR

PChar

LPWSTR or PWSTR

PWideChar { 3.12 fix }

void*

Pointer

BOOL

Bool

float

Single

double

Double

long double

Extended

LP,NP,PP,P prefix: if first = T then T becomes P else P prefix

HANDLE

THandle

FARPROC

TFarProc

ATOM

TAtom

TPOINT

TPoint

TRECT

TRect

COLORREF

TColorRef

OFSTRUCT

TOFStruct

DEBUGHOOKINFO

TDebugHookInfo

BITMAP

TBitMap

RGBTRIPLE

TRGBTriple

RGBQUAD

TRGBQuad

BITMAPCOREHEADER

TBitmapCoreHeader

BITMAPINFOHEADER

TBitmapInfoHeader

BITMAPINFO

TBitmapInfo

BITMAPCOREINFO

TBitmapCoreInfo

BITMAPFILEHEADER

TBitmapFileHeader

HANDLETABLE

THandleTable

METARECORD

TMetaRecord

METAHEADER

TMetaHeader

METAFILEPICT

TMetaFilePict

TEXTMETRIC

TTextMetric

NEWTEXTMETRIC

TNewTextMetric

LOGBRUSH

TLogBrush

LOGPEN

TLogPen

PATTERN

TPattern { TLogBrush }

PALETTEENTRY

TPaletteEntry

LOGPALETTE

TLogPalette

LOGFONT

TLogFont

ENUMLOGFONT

TEnumLogFont

PANOSE

TPanose

KERNINGPAIR

TKerningPair

OUTLINETEXTMETRIC

TOutlineTextMetric

FIXED

TFixed

MAT2

TMat2

GLYPHMETRICS

TGlyphMetrics

POINTFX

TPointFX

TTPOLYCURVE

TTTPolyCurve

TTPOLYGONHEADER

TPolygonHeader

ABC

TABC

RASTERIZER_STATUS

TRasterizer_Status

MOUSEHOOKSTRUCT

TMouseHookStruct

CBTACTIVATESTRUCT

TCBTActivateStruct

HARDWAREHOOKSTRUCT

THardwareHookStruct

EVENTMSG

TEventMsg

WNDCLASS

TWndClass

MSG

TMsg

MINMAXINFO

TMinMaxInfo

SEGINFO

TSegInfo

ACCEL

TAccel

PAINTSTRUCT

TPaintStruct

CREATESTRUCT

TCreateStruct

CBT_CREATEWND

TCBT_CreateWnd

MEASUREITEMSTRUCT

TMeasureItemStruct

DRAWITEMSTRUCT

TDrawItemStruct

DELETEITEMSTRUCT

TDeleteItemStruct

COMPAREITEMSTRUCT

TCompareItemStruct

WINDOWPOS

TWindowPos

WINDOWPLACEMENT

TWindowPlacement

NCCALCSIZE_PARAMS

TNCCalcSize_Params

SIZE

TSize

MENUITEMTEMPLATEHEADER

TMenuItemTemplateHeader

MENUITEMTEMPLATE

TMenuItemTemplate

DCB

TDCB

COMSTAT

TComStat

MDICREATESTRUCT

TMDICreateStruct

CLIENTCREATESTRUCT

TClientCreateStruct

MULTIKEYHELP

TMultiKeyHelp

HELPWININFO

THelpWinInfo

CTLSTYLE

TCtlStyle

CTLtype

TCtltype

CTLINFO

TCtlInfo

DDEADVISE

TDDEAdvise

DDEDATA

TDDEData

DDEPOKE

TDDEPoke

DDEAACK

TDDEAck

DEVMODE

TDevMode

KANJISTRUCT

TKanjiStruct

It's also nice to have access to the translation of the special WINDOWS.H types, which is already done by Borland, and can be found in WINTYPES.PAS (it's a rewarding experience to compare these two files with each other - you'll learn a lot about C and Pascal conversion issues).

Now that we've handled the standard built-in (and Windows) types, let's look at the C type definition of WING_DITHER_TYPE that is present in the WING.H file.

typedef enum WING_DITHER_TYPE

{

WING_DISPERSED_4x4,

WING_DISPERSED_8x8,

WING_CLUSTERED_4x4

} WING_DITHER_TYPE;

This is a so -called enumerated type, and can be translated into an ObjectPascal enumerated type very easily:

type

WING_DITHER_TYPE =

(WING_DISPERSED_4x4,

WING_DISPERSED_8x8,

WING_CLUSTERED_4x4);

While most C DLL header files contain only constant definitions (of the form #define XYZ value) and function prototypes, type definitions are also found, and are therefore important to be able to convert.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值