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动画之波纹
样式定义: #ContactAbout { height: auto; position: relative; overflow: hidden; } #sectioncontact { displa ...
- Red Hat Linux9命令行--修改补充中
1.使用rpm工具安装应用软件:rpm [选项] [软件包名] 常用的参数及含义如下图所示: 2.编译安装应用软件 (1).tar.gz和.tgz使用如下的命令: [root@myhost ro ...
- java设计优化--装饰者模式
装饰者模式拥有一个设计非常巧妙的结构,它可以动态的添加功能.在基本的设计原则中,有一条重要的设计准则就是合成/聚合复用原则.根据该原则的思想,代码复用应该尽可能使用委托,而不是使用继承.因为继承是一种 ...
- BIEEE 创建多维钻取分析(4)
在上一节时,我们创建了一个基于部门号的工资分类汇总. 这里就引出了一个概念:维度 专业的解释大家自行百度,这里就不班门弄斧了.从数据的使用角度看,维度可以简单的理解成“数据分类汇总的一种依据”. 按“ ...
- Oracle创建主外键
-创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空); -增加主键 alt ...
- [IOS+PHP Jason格式的发送与解析]
服务器端PHP文件connect.php: <?php $q = mysql_connect("localhost","root","" ...
- Activator.CreateInstance 反射实例化对象
public class CommonReq { private String TransNo { get; set;} public String SubmitData { get; set; } ...
- jquery------.mouseover()和.mouseout()的高级效果使用
index.jsp <div style="width:100%;height:40px;background-color:#aaa;position:absolute;"& ...
- boost状态机学习二(秒表)
基础主题:秒表 下面我们要为一个机械秒表建模一个状态机.这样一个秒表通常会有两个按钮. * Start/Stop * Reset 同时有两种状态: * Stoped: 表针停留在上次停止时的位置: o ...
- ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS
ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS We recently interviewed ...