您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
在Delphi编程中使用C语言代码
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000

  在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

本新闻共2页,当前在第1页  1  2

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:关于Java23种设计模式的有趣见解
下一篇:Delphi中Hash表的使用方法
 相关新闻
·使用异步Servlet扩展AJAX应用程序·VC++开发的应用技巧三则放送
·在VisualStudio中使用Windows桌面搜索·用VisualStudio2005生成浏览器帮助对象
·J2ME中使用缓存将屏幕内容存储为Image·使用J2ME程序测试MIDlet的生命周期
·Java基础:JVM(Java 虚拟机)的详细讲解·ASP.NET实现投票结果的图片进度条显示
·Delphi 中动态链接库(dll)的建立和使用·破解网站发布系统 ASP生成静态页面方法
·为自己的ASP网站系统构建一套标记语言·基于JSP技术的网络教学平台设计
·浅析JSP开发中的对象和范围属性·经验分享:做软件测试三四年后的感想
·熊猫烧香核心源码(Delphi模仿版本)·Delphi中Hash表的使用方法
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
·2008年中级会计职称《经济法》试题及答案
·2008年注册会计师考前模拟试题参考答案之
·2008年注册会计师考前模拟试题之《会计》
·2008年注册会计师考前模拟试题之《税法》
·2008年高校招生全国统考理数试题(四川延
·2008年全国高考物理科试题参考答案(上海
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例