熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

在Delphi編程中使用C語言代碼[1]

2022-06-13   來源: Delphi編程 

  在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
  LONG DOUBLE > Extended
  LONG INT > 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
  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

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24758.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.