Delphi適合用來開發應用程序但是有時侯一些底層的東西可以直接使用C語言來開發我在公司經常開發跟硬件相關的項目而很多硬件的SDK包是用C來寫的這個時候我一般把它們轉換成Delphi(PASCAL)語法的代碼
一:將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
MAT
> TMat
MDICREATESTRUCT
> TMDICreateStruct
MEASUREITEMSTRUCT
> TMeasureItemStruct
MENUITEMTEMPLATE
> TMenuItemTemplate
MENUITEMTEMPLATEHEADER
> TMenuItemTemplateHeader
[] [] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/8458.html