Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16496573
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:51:31

下载本文示例代码
  在Delphi编程中使用C语言代码   Windows下编程的工具有很多,例如VB,Delphi,VC等等.我在这里不想讨论"它们的具体哪个更好一点"这种幼稚的问题.玩过DOS程序设计的人都知道,DOS下很多语言的实质核心还是调用系统提供的汇编中断函数.到了Windows下,它就变成了我们常说的API了.而在Windows下写程序很多时候都是调用API,语言,只不过是一个表达工具而已.   我现在已经参加工作大约有半年左右,我们公司是用Borland公司的Delphi作为主开发工具.本着未偏袒任何一个工具的立场,我说句公道话:Delphi是目前Win32下开发程序的最快速,最有效率的工具.   Delphi适合用来开发应用程序,但是有时侯一些底层的东西可以直接使用C语言来开发.我在公司经常开发跟硬件相关的项目,而很多硬件的SDK包是用C来写的.这个时候我一般把它们转换成Delphi(PASCAL)语法的代码.下面谈一下我的个人粗浅经验.因为当时学校教的是Pascal语言,所以我对C语言并不是太熟手.下面的观点或者代码如有错漏之处希望高手们放小弟一马:)   一:将C语言的程序编译成DLL供Delphi调用.这种方法过于简单,而且需要额外带一个DLL文件,所以不在本文的讨论范围之内.   二:直接转换C语言代码到DELPHI代码   C语言的函数格式与Delphi不同,它们是函数返回类型在前,函数声明在后.对于没有任何返回类型的函数则定义为VOID类型.   例如:Delphi中函数function MyFunction:(intIN:integer):Bool;相应的C语言代码就变成Bool MyFunction(int intIN);又例如procedure MyProcedure;====>void MyProcedure;采用这种方法,一般要求对C语言比较熟悉.我一般是采用这种方法.下面是我收集整理的自己常用的Delphi与C之间的类型对应表.其中左边是C类型,右边是对应的Delphi类型: 以下是引用片段:  ABC -> TABC   ACCEL -> TAccel   ATOM -> TAtom   BITMAP -> TBitMap   BITMAPCOREHEADER -> TBitmapCoreHeader   BITMAPCOREINFO -> TBitmapCoreInfo   BITMAPFILEHEADER -> TBitmapFileHeader   BITMAPINFO -> TBitmapInfo   BITMAPINFOHEADER -> TBitmapInfoHeader   BOOL -> Bool   CBT_CREATEWND -> TCBT_CreateWnd   CBTACTIVATESTRUCT -> TCBTActivateStruct   CHAR -> Char   CHAR* -> PChar   CLIENTCREATESTRUCT -> TClientCreateStruct   COLORREF -> TColorRef   COMPAREITEMSTRUCT -> TCompareItemStruct   COMSTAT -> TComStat   CREATESTRUCT -> TCreateStruct   CTLINFO -> TCtlInfo   CTLSTYLE -> TCtlStyle   CTLtype -> TCtltype   DCB -> TDCB   DDEAACK -> TDDEAck   DDEADVISE -> TDDEAdvise   DDEDATA -> TDDEData   DDEPOKE -> TDDEPoke   DEBUGHOOKINFO -> TDebugHookInfo   DELETEITEMSTRUCT -> TDeleteItemStruct   DEVMODE -> TDevMode   DOUBLE -> Double   DRAWITEMSTRUCT -> TDrawItemStruct   DWORD -> LongInt   ENUMLOGFONT -> TEnumLogFont   EVENTMSG -> TEventMsg   FARPROC -> TFarProc   FIXED -> TFixed   FLOAT -> Single   GLYPHMETRICS -> TGlyphMetrics   HANDLE -> THandle   HANDLETABLE -> THandleTable   HARDWAREHOOKSTRUCT -> THardwareHookStruct   HELPWININFO -> THelpWinInfo   INT -> Integer   KERNINGPAIR -> TKerningPair   LOGBRUSH -> TLogBrush   LOGFONT -> TLogFont   LOGPALETTE -> TLogPalette   LOGPEN -> TLogPen   LONG -> LongInt   LONG DOUBLE -> Extended   LONG INT -> LongInt   LPSTR -> PChar   LPWSTR -> PWideChar   MAT2 -> TMat2   MDICREATESTRUCT -> TMDICreateStruct   MEASUREITEMSTRUCT -> TMeasureItemStruct   MENUITEMTEMPLATE -> TMenuItemTemplate   MENUITEMTEMPLATEHEADER -> TMenuItemTemplateHeader   METAFILEPICT -> TMetaFilePict   METAHEADER -> TMetaHeader   METARECORD -> TMetaRecord   MINMAXINFO -> TMinMaxInfo   MOUSEHOOKSTRUCT -> TMouseHookStruct   MSG -> TMsg   MULTIKEYHELP -> TMultiKeyHelp   NCCALCSIZE_PARAMS -> TNCCalcSize_Params   NEWTEXTMETRIC -> TNewTextMetric   OFSTRUCT -> TOFStruct   OUTLINETEXTMETRIC -> TOutlineTextMetric   PAINTSTRUCT -> TPaintStruct   PALETTEENTRY -> TPaletteEntry   PANOSE -> TPanose   PATTERN -> TPattern   POINTFX -> TPointFX   PSTR -> PChar   PWSTR -> PWideChar   RASTERIZER_STATUS -> TRasterizer_Status   RGBQUAD -> TRGBQuad   RGBTRIPLE -> TRGBTriple   SEGINFO -> TSegInfo   SHORT -> SmallInt   SHORT INT -> SmallInt   SIZE -> TSize   TEXTMETRIC -> TTextMetric   TPOINT -> TPoint   TRECT -> TRect   TTPOLYCURVE -> TTTPolyCurve   TTPOLYGONHEADER -> TPolygonHeader   UINT -> Word   UNSIGNED -> Word   UNSIGNED CHAR -> Byte   UNSIGNED INT -> Word   UNSIGNED LONG -> LongInt(DWORD)   UNSIGNED LONG INT -> LongInt   UNSIGNED SHORT -> Word   UNSIGNED SHORT INT -> Word   VOID* -> Pointer   WINDOWPLACEMENT -> TWindowPlacement   WINDOWPOS -> TWindowPos   WNDCLASS -> TWndClass   WORD -> Word共3页。 1 2 3 :   在Delphi编程中使用C语言代码   Windows下编程的工具有很多,例如VB,Delphi,VC等等.我在这里不想讨论"它们的具体哪个更好一点"这种幼稚的问题.玩过DOS程序设计的人都知道,DOS下很多语言的实质核心还是调用系统提供的汇编中断函数.到了Windows下,它就变成了我们常说的API了.而在Windows下写程序很多时候都是调用API,语言,只不过是一个表达工具而已.   我现在已经参加工作大约有半年左右,我们公司是用Borland公司的Delphi作为主开发工具.本着未偏袒任何一个工具的立场,我说句公道话:Delphi是目前Win32下开发程序的最快速,最有效率的工具.   Delphi适合用来开发应用程序,但是有时侯一些底层的东西可以直接使用C语言来开发.我在公司经常开发跟硬件相关的项目,而很多硬件的SDK包是用C来写的.这个时候我一般把它们转换成Delphi(PASCAL)语法的代码.下面谈一下我的个人粗浅经验.因为当时学校教的是Pascal语言,所以我对C语言并不是太熟手.下面的观点或者代码如有错漏之处希望高手们放小弟一马:)   一:将C语言的程序编译成DLL供Delphi调用.这种方法过于简单,而且需要额外带一个DLL文件,所以不在本文的讨论范围之内.   二:直接转换C语言代码到DELPHI代码   C语言的函数格式与Delphi不同,它们是函数返回类型在前,函数声明在后.对于没有任何返回类型的函数则定义为VOID类型.   例如:Delphi中函数function MyFunction:(intIN:integer):Bool;相应的C语言代码就变成Bool MyFunction(int intIN);又例如procedure MyProcedure;====>void MyProcedure;采用这种方法,一般要求对C语言比较熟悉.我一般是采用这种方法.下面是我收集整理的自己常用的Delphi与C之间的类型对应表.其中左边是C类型,右边是对应的Delphi类型: 以下是引用片段:  ABC -> TABC   ACCEL -> TAccel   ATOM -> TAtom   BITMAP -> TBitMap   BITMAPCOREHEADER -> TBitmapCoreHeader   BITMAPCOREINFO -> TBitmapCoreInfo   BITMAPFILEHEADER -> TBitmapFileHeader   BITMAPINFO -> TBitmapInfo   BITMAPINFOHEADER -> TBitmapInfoHeader   BOOL -> Bool   CBT_CREATEWND -> TCBT_CreateWnd   CBTACTIVATESTRUCT -> TCBTActivateStruct   CHAR -> Char   CHAR* -> PChar   CLIENTCREATESTRUCT -> TClientCreateStruct   COLORREF -> TColorRef   COMPAREITEMSTRUCT -> TCompareItemStruct   COMSTAT -> TComStat   CREATESTRUCT -> TCreateStruct   CTLINFO -> TCtlInfo   CTLSTYLE -> TCtlStyle   CTLtype -> TCtltype   DCB -> TDCB   DDEAACK -> TDDEAck   DDEADVISE -> TDDEAdvise   DDEDATA -> TDDEData   DDEPOKE -> TDDEPoke   DEBUGHOOKINFO -> TDebugHookInfo   DELETEITEMSTRUCT -> TDeleteItemStruct   DEVMODE -> TDevMode   DOUBLE -> Double   DRAWITEMSTRUCT -> TDrawItemStruct   DWORD -> LongInt   ENUMLOGFONT -> TEnumLogFont   EVENTMSG -> TEventMsg   FARPROC -> TFarProc   FIXED -> TFixed   FLOAT -> Single   GLYPHMETRICS -> TGlyphMetrics   HANDLE -> THandle   HANDLETABLE -> THandleTable   HARDWAREHOOKSTRUCT -> THardwareHookStruct   HELPWININFO -> THelpWinInfo   INT -> Integer   KERNINGPAIR -> TKerningPair   LOGBRUSH -> TLogBrush   LOGFONT -> TLogFont   LOGPALETTE -> TLogPalette   LOGPEN -> TLogPen   LONG -> LongInt   LONG DOUBLE -> Extended   LONG INT -> LongInt   LPSTR -> PChar   LPWSTR -> PWideChar   MAT2 -> TMat2   MDICREATESTRUCT -> TMDICreateStruct   MEASUREITEMSTRUCT -> TMeasureItemStruct   MENUITEMTEMPLATE -> TMenuItemTemplate   MENUITEMTEMPLATEHEADER -> TMenuItemTemplateHeader   METAFILEPICT -> TMetaFilePict   METAHEADER -> TMetaHeader   METARECORD -> TMetaRecord   MINMAXINFO -> TMinMaxInfo   MOUSEHOOKSTRUCT -> TMouseHookStruct   MSG -> TMsg   MULTIKEYHELP -> TMultiKeyHelp   NCCALCSIZE_PARAMS -> TNCCalcSize_Params   NEWTEXTMETRIC -> TNewTextMetric   OFSTRUCT -> TOFStruct   OUTLINETEXTMETRIC -> TOutlineTextMetric   PAINTSTRUCT -> TPaintStruct   PALETTEENTRY -> TPaletteEntry   PANOSE -> TPanose   PATTERN -> TPattern   POINTFX -> TPointFX   PSTR -> PChar   PWSTR -> PWideChar   RASTERIZER_STATUS -> TRasterizer_Status   RGBQUAD -> TRGBQuad   RGBTRIPLE -> TRGBTriple   SEGINFO -> TSegInfo   SHORT -> SmallInt   SHORT INT -> SmallInt   SIZE -> TSize   TEXTMETRIC -> TTextMetric   TPOINT -> TPoint   TRECT -> TRect   TTPOLYCURVE -> TTTPolyCurve   TTPOLYGONHEADER -> TPolygonHeader   UINT -> Word   UNSIGNED -> Word   UNSIGNED CHAR -> Byte   UNSIGNED INT -> Word   UNSIGNED LONG -> LongInt(DWORD)   UNSIGNED LONG INT -> LongInt   UNSIGNED SHORT -> Word   UNSIGNED SHORT INT -> Word   VOID* -> Pointer   WINDOWPLACEMENT -> TWindowPlacement   WINDOWPOS -> TWindowPos   WNDCLASS -> TWndClass   WORD -> Word共3页。 1 2 3 : 下载本文示例代码


在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码在Delphi编程中使用C语言代码
阅读(253) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~