程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在Delphi編程中使用C語言代碼(3)

在Delphi編程中使用C語言代碼(3)

編輯:Delphi

這種方法的好處在於最終EXE不用帶任何外部文件.也不用對C語言過於熟悉.

我們都知道,代碼在編譯成可執行文件(或DLL,OCX文件,下同)之前,都必須得先生成OBJ文件(Delphi一般是DCU文件,但也可以通過編輯編譯選項生成OBJ文件),然後把OBJ文件和資源文件(*.RES)鏈接成最終的可執行文件.利用這個方法,我們可以直接把OBJ文件鏈接到我們的程序裡面.

不過需要注意的是,編譯器不同,生成的OBJ文件也不一樣.Microsoft的編譯器生成的OBJ文件是COFF格式,而Borland的C++Builder生成的是OMF格式.因為我們需要在Delphi中鏈接,所以必須使用CBC,或者Borland官方站點帶的免費編譯工具.下面我們通過一個簡單的例子來說明具體操作步驟:

這個例子是簡單的提供一個函數,用來判斷一個文件是否為Dat格式的VCD文件.頭文件聲明如下:

以下是引用片段:
  /*
  文件名稱:DatFormat.h
  */
  #ifndefDatFormat_H
  #defineDatFormat_H
  #include 
  #pragmapack(push,1)//這個與下面的配對,一般用到記錄類型的時候需要定義,這裡實際不用
  #ifdef__cplusplus
  extern"C"{
  #endif
  externBOOLCheckIsDatFile(constchar*FileName,BOOL*IsDatFile);
  #ifdef__cplusplus
  }
  #endif
  #pragmapack(pop)
  #endif//DatFormat_H
  具體實現代碼DatFormat.c如下:
  #include"DatFormat.h"
  BOOLCheckIsDatFile(constchar*FileName,BOOL*IsDatFile)
  /*
  函數說明:該函數用於判斷一個文件是否為Dat文件(即VCD文件)格式.
  參數:
  IN:
  FileName:欲判斷的文件名稱
  IN,OUT:
  IsDatFile:是否為Dat格式文件
  OUT:
  讀文件失敗返回FALSE,否則返回TRUE.
  ------------------------------------
  作者:陳經韬.2004,01,17.http://www.138soft.com,[email protected]
  */
  {
  HANDLEhFile;
  DWorddwBytesRead;
  BOOLre;
  charMyBuf[4];
  *IsDatFile=FALSE;
  //建立讀文件句柄
  hFile=CreateFile(FileName,
  GENERIC_READ,
  FILE_SHARE_READ,
  NULL,
  OPEN_EXISTING,
  0,
  0);
  if(hFile==INVALID_HANDLE_VALUE)returnFALSE;
  //讀文件
  re=ReadFile(hFile,
  &MyBuf,
  4,
  &dwBytesRead,
  NULL);
  if(dwBytesRead!=4)
  {
  CloseHandle(hFile);
  returnFALSE;
  }
  //讀文件失敗的時候
  if(re!=TRUE)
  {
  CloseHandle(hFile);
  returnFALSE;
  }
  CloseHandle(hFile);
  *IsDatFile=(MyBuf[0]=='R'&&MyBuf[1]=='I'&&MyBuf[2]=='F'&&MyBuf[3]=='F');
  return(TRUE);
  }

運行CBC,新建一個工程,然後把DatFormat.c添加到工程裡面,編譯整個工程,將得到我們需要的OBJ文件:DatFormat.OBJ.然後我們關閉CBC即可,因為下面不再需要用到它了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved