其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

在Delphi编程中使用C语言代码[1]


发布日期:2019年10月08日
 
在Delphi编程中使用C语言代码[1]

在Delphi编程中使用C语言代码

Windows下编程的工具有很多例如VBDelphiVC等等我在这里不想讨论它们的具体哪个更好一点这种幼稚的问题玩过DOS程序设计的人都知道DOS下很多语言的实质核心还是调用系统提供的汇编中断函数到了Windows下它就变成了我们常说的API了而在Windows下写程序很多时候都是调用API语言只不过是一个表达工具而已

我现在已经参加工作大约有半年左右我们公司是用Borland公司的Delphi作为主开发工具本着未偏袒任何一个工具的立场我说句公道话:Delphi是目前Win下开发程序的最快速最有效率的工具

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

LONGDOUBLE>Extended

LONGINT>LongInt

LPSTR>PChar

LPWSTR>PWideChar

MAT>TMat

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

SHORTINT>SmallInt

SIZE>TSize

TEXTMETRIC>TTextMetric

TPOINT>TPoint

TRECT>TRect

TTPOLYCURVE>TTTPolyCurve

TTPOLYGONHEADER>TPolygonHeader

UINT>Word

UNSIGNED>Word

UNSIGNEDCHAR>Byte

UNSIGNEDINT>Word

UNSIGNEDLONG>LongInt(DWORD)

UNSIGNEDLONGINT>LongInt

UNSIGNEDSHORT>Word

UNSIGNEDSHORTINT>Word

VOID*>Pointer

WINDOWPLACEMENT>TWindowPlacement

WINDOWPOS>TWindowPos

WNDCLASS>TWndClass

WORD>Word

[] [] [] []

               

上一篇:在Delphi编程中使用C语言代码[2]

下一篇:用Delphi实现对光驱盘盒的开关控制