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.
Delphi与C语言类型转换对照的更多相关文章
- Delphi VS C语言类型转换对照
Delphi VS C语言类型转换对照 When converting C function prototypes to Pascal equivalent declarations, it's ...
- php 、asp、 java、 c#、 delphi之间的语言对照
PHP是一种跨平台的server端的嵌入式脚本语言.它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发人员能够高速地写出动态产生页面. 它支持眼下绝大多数数据库. 另 ...
- Go 语言类型转换
类型转换用于将一种数据类型的变量转换为另外一种类型的变量.Go 语言类型转换基本格式如下: type_name(expression) type_name 为类型,expression 为表达式. 实 ...
- Go语言类型转换
类型转换用于将一种数据类型的变量转换为另外一种类型的变量. Go语言类型转换基本格式如下:表达式 T(v) 将值 v 转换为类型 T . Go语言各种类型转换及函数的高级用法:strconv包实现了基 ...
- GO语言学习(十七)Go 语言类型转换
Go 语言类型转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量.Go 语言类型转换基本格式如下: type_name(expression) type_name 为类型,expressi ...
- C语言类型转换原理
C语言类型转换 int a; a=1.23 这里把1.23赋值给a发生了隐式转换,原理如下: int a; float b=3.14; a=b; b赋值给a的过程:首先找一个中间变量是a的类型(该例中 ...
- C语言---类型转换
itoa 功 能:把一整数转换为字符串 用 法:char *itoa(int value, char *string, int radix); 详细解释:itoa是英文integer to array ...
- c语言类型转换注意事项
转载自: http://blog.csdn.net/zhuimengzh/article/details/6728492 1.隐式转换 C在以下四种情况下会进行隐式转换: 1.算 ...
- 执行效率做比较,Go、python、java、c#、delphi、易语言等
比较环境,在win7 64位,比较各种语言的整数型运算,下面的比较只作为单项比较.具体方式,40000*40000遍历相加.为了防止编译器优化,生成一个随机数. 1:c#,在NET2.0框架下作为 ...
随机推荐
- css写一个梯形
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>D ...
- 工作的思考十五:升职前需要做的准备(TeamLeader)
当一个人在公司的工作年限以及经验的积累到达一个程度的时候,升职其实是件高兴的事,但面临角色的转变需要提前做些准备的. 其实如果你对你的职业规划很清楚的话,那么你就应该在升职之前就会开始进行角色的转换. ...
- 软工实践练习——使用Git进行代码管理
GITHUB上的预备活动: 注册 创建小组Organization,邀请组员进来 将代码库fork到小组Organization底下 下载并使用GIT: Git的安装 使用Git进行代码管理 1.从百 ...
- Qt学习思考
对各个部件基本了解,初步理解GUI应用程序的创建 2D图形文字绘制,3D图形(openGL)等 模型/视图框架编程,处理复杂的数据 多媒体框架 数据库,xml,文件读写等 网络编程 做出比较美观的界面 ...
- OC基础--OC内存管理原则和简单实例
ARC: 由于自己的学习视频太早,Xcode是iOS6版本,新建命令行项目后,系统会默认启动ARC机制,全程Automatic Reference Counting,简单的说,就是代码中自动加入了re ...
- C基础--初学指针
一.指针简介(任何指针变量在内存中占八个字节的存储空间) 1.定义指针变量(格式):变量类型 *变量名:--定义一个指向整形变量的指针 int *p; 2.作用:指针变量就是用来存储其他变量的地址: ...
- 你也可以当面霸-Servlet与JSP的原理及特点
既然是面试系列,就是面试官和应聘者之间的对话.本文是采用一问一答的形式呈现给读者的,这样能有一个明确的考察点,不像理论知识那么枯燥. 01.什么是Servlet技术 Servlet是和平台无关的服务器 ...
- 【SDOI2008】解题汇总
好叭我真的是闲的了... /---------------------------------------------/ BZOJ-2037 [SDOI2008]Sue的小球 DP+相关费用提前计算 ...
- sql注入实例分析
什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...
- HD1847 Good Luck in CET-4 Everybody!(巴什博弈)
巴什博弈: 一堆物品n个,最多取m个,最少取1个,最后取走的人获胜 分析:只要保证取玩最后剩m+1个,则必定胜利,所以构造m+1,只要n是 m+1的倍数,则先手必败,每次先手取玩,后手可取使得剩下的仍 ...