在Delphi编程中使用C语言代码[2]
这种方法的好处在于最终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 */ #ifndef DatFormat_H #define DatFormat_H #include #pragma pack(push )//这个与下面的配对 一般用到记录类型的时候需要定义 这里实际不用 #ifdef __cplusplus extern C { #endif extern BOOL CheckIsDatFile(const char * FileName BOOL *IsDatFile); #ifdef __cplusplus } #endif #pragma pack(pop) #endif // DatFormat_H 具体实现代码DatFormat c如下: #include DatFormat h BOOL CheckIsDatFile(const char * FileName BOOL *IsDatFile) /* 函数说明:该函数用于判断一个文件是否为Dat文件(即VCD文件)格式 参数: IN: FileName:欲判断的文件名称 IN OUT: IsDatFile:是否为Dat格式文件 OUT: 读文件失败返回FALSE 否则返回TRUE 作者:陈经韬 // soft lovejingtao@ cn */ { HANDLE hFile; DWORD dwBytesRead; BOOL re; char MyBuf[ ]; *IsDatFile=FALSE; //建立读文件句柄 hFile = CreateFile(FileName GENERIC_READ FILE_SHARE_READ NULL OPEN_EXISTING ); if (hFile == INVALID_HANDLE_VALUE) return FALSE; //读文件 re = ReadFile(hFile &MyBuf &dwBytesRead NULL); if (dwBytesRead!= ) { CloseHandle(hFile); return FALSE; } //读文件失败的时候 if (re!=TRUE) { CloseHandle(hFile); return FALSE; } CloseHandle(hFile); *IsDatFile=(MyBuf[ ]== R && MyBuf[ ]== I && MyBuf[ ]== F && MyBuf[ ]== F ); return(TRUE); }
lishixinzhi/Article/program/Delphi/201311/24759