在C++Builder中使用Delphi文件
在使用多种语言和工具编写一个应用程序时，最为困难的事情之一是创建和维护定义文件的接口。幸运的是，C++Builder把这一切都替你做好了。当在项目中加入一个.PAS文件时，C++Builder会自动创建一个.HPP文件。 在CPP文件中，可以调用Pascal的函数、对象等。这为Delphi的程序员移植全部或部分的项目提供了便捷的途径。 下面是在C++Builder中使用Delphi代码的原则： 1、在C++Builder的窗体编辑器中，不能修改或编辑Delphi的窗体。但是可以修改Delphi窗体的PAS文件和子节点。可以用Bin目录下的Convert程序将Delphi的窗体转换成文本格式 ，然后以文本方式编辑Delphi窗体，然后再转换回DFM文件格式。关键是要记住：可以在 IDE中编辑Delphi的PAS文件，但是不能编辑Delphi的窗体文件（DFM文件）。 2、在同一文件中，C++和Object Pascal不能同时定位。Object Pascal 可以被C++调用， 反之亦然。但是在C++中，调用Pascal要比从Pascal中调用C++要容易些。 3、C++Builder的项目中不能链接DCU文件，但是可以直接使用源码。另一种方法是：先 生成一个可以被C++Builder链接的OBJ文件（如果是使用Delphi3.x）。这个方法适应于 窗体、组件和单元。 C++Builder并不关心项目中的单元是用C++还是用DELPHI编写。C++ Builder都将当作C++Builder统一进行编译。 一般来讲，任何在Delphi3.x中用delphi编译器可以编译的单元 都可以在C++Builder中编译。C++Builder可以编译下列内容： 1、Delphi窗体； 2、包含对象的Delphi单元； 3、包含过程、函数、常量、数组等的Delphi单元； 4、Delphi组件。 在C++Builder项目中，添加Delphi单元的步骤如下： 1、选择Projet|Add to Project 2、从Add to Project对话框中选择CPP、C、PAS、RES、LIB或OBJ。对于Delphi单元，选择PAS。 3、浏览目录并选择加入项目所需要的文件。 4、找到所需的文件后，单击Open完成。无须以任何方式进一步处理Pascal文件。 在C++Builder中使用Delphi组件 在C++Builder中使用Delphi组件是容易的。大部分组件不需修改就可以直接使用，但是有时在安装组件选项板时出现的编译错误也会导致Delphi的组件出现问题。 在C++Builder中试图使用Delphi组件时可能会遇到一些问题，如链接错误等。 C++Builder中有三种文件扩展名用于组件，即OBJ、CPP、PAS文件，而对于每一种扩展名文件，C++Builder都有不同的处理方法。 1、使用.OBJ文件安装组件时，编译器把目标文件链接到程序包库。 2、如果是.CPP文件，则先调用C++编译器产生一个.OBJ文件，然后再链接到组件库。 3、如果是.PAS文件，则先调用Pascal编译器，这个编译器 是一个小型编译器。它不同于Delphi中的Pascal编译器。它不仅创建一个Delphi Compiled Units(DCU)文件，而且还产生一个.OBJ文件和一个以.HPP为扩展名的C++头文件(在使用Pascal文件时，可以强制产生C++的头文件、OBJ和DCU文件。命令行状态下使用.JPHN作为DCC32.exe的可选参数)。然后.OBJ文件链接到组件库，而头文件用于应用程序的类的说明。 尽管创建了一个C++的头文件，有时还是可能会出现问题。一些pascal语言的特性不能转换成 C++，因而在下列三个方面可能产生问题。 1、给组件库安装组件时； 2、在C++Builder生成C++头文件时； 3、使用Delphi组件后链接C++Builder应用程序时。 在C++Builder中可以使用Object Pascal的代码，这是一个惊人之举。整个VCL都是用Object Pascal编写的，它可以和C++Builder代码进行链接。但是要记住，不是百分之百可以链接，这是 由于C++和Object Pascal之间极少的不兼容造成的。