在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之间极少的不兼容造成的。

时间: 2024-11-08 19:02:57

在C++Builder中使用Delphi文件的相关文章

在C++Builder中使用Delphi控件

Delphi的出现将一大批程序员带入了Windows下的可视化编程,为一些C&C++的死党程序员所羡慕.感叹.直到C++Builder的出现这些Programer才用到了梦寐以求的编程工具,也将一些不得已"投敌"到Delphi下的程序员又拉回到C++的怀抱.她正真将Windows下的可视化编程和面向对象编程语言有机的融合在一起.但是由于C++Builder面市时间较短固而可用的控件不多,而且控件的使用也只针对某一版本,相互之间的可互用性不好,除非你有SourceCode:对于D

如何在C++Builder中使用Delphi控件

使C++Builder使用DelphiVCL类库的方法基于Windows中较通用的DLL方式.在实际应用中 找到了将VCL控件转化为DLL库,在C++Builder动态调用DLL.此法适用于非可视VCL控件. 假令在Delphi中有一Sample控件,有属性Actived.Pro1.Pro2,欲将这个控件转到 C++Builder中使用.一.Delphi中DLL的制作在Delphi中新建一DLL项目SampleDLL,时在此项 目中Create一个新的类TTtempcomp基类为TCompone

C++ Builder中利用组件传送文件

在Borland C++ Builder中,使用NMStrmServ和NMStrm组件可以很容易地在两台电脑之间传递文件.当然,你也可以使用基于FTPJ协议的文件传输组件NMFTP,但使用NMStrmServ和NMStrm组件更加方便.快捷. 首先,运行Borland C++ Builder,在窗体Form1中加入一个NMStrmServ组件和一个保存对话框组件SaveDialog. 然后在NMStrmServ1的OnMSG事件中加入: //保存文件对话框 if(SaveDialog1->Exe

C++ Builder中如何保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

C++ Builder中保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

C++Builder中实现控件数组的功能

Borland C++ Builder作为Inprise(原Borland)公司新推出的快速应用程序开发工具(RAD),具有威力强大的C++语言和快捷便利的可视化编程完美结合的优点,遗憾的是其没有直接提供像VB中的控件数组的功能,需要开发者自己编程实现. VB中的一个控件数组可以 允许多个控件共享同一个事件句柄 提供了运行期间增加一个控件的机制 提供了一种方便的组合控件的方法. 前两项在C++ Builder中早已实现,而且CB更有一个优点.即不同类型的控件可以使用相同的句柄(只需在相关控件的O

在C++Builder中开发CGI的一点点体会

c++|cgi 汗ing...这点点体会是面向新手的,高手可以不看.我对php的了解还不够深入,所以有时碰到用php一时没法解决的问题就求助于顺手的开发工具来做cgi了,而且安全性和稳定性也很容易提高,exe的程序也只是几十kb而已,速度还是可以的,如果做成dll,那么速度也是很快的. 一.根据页面请求方法的不同,获取传入数据有两种方法:1.如果是POST方法:例:提交表单中有一个文本框名叫 tName   那么在C++Builder中就应该如下获取:      AnsiString s = R

CB环境中实现在菜单中显示历史文件列表

本文介绍了如何在Windows环境下实现菜单中显示历史文件列表,同时概要介绍了Tregistry类的使用方法. 现在,在许多Windows应用程序都具有这样一个功能:可以在文件菜单下面显示列出最近访问过的文件,这使用户很容易再次访问曾经访问过的文件.在过去几年中,这项技术以成为拥有文件菜单项的应用程序的共同特色:如Wps系列和Office系列.在以前的DOS环境中,程序员一般通过创建一个文件用来记录文件列表:那么在Windows环境中,还有其他的方法吗?最近笔者利用C++ Builder5.0

C++ Builder中目录处理的一些函数

在编程时,经常有一些针对目录的操作,如打开目录对话框选择一个目录,直接创建多级目录,直接删除多级目录,判断某个目录是否存在等.本文就这些问题给出编程实现方法,并给出详细的程序代码,供各位编程爱好者参考. 一.判断目录是否存在: C++ Builder中提供了检查文件是否存在的函数FileExists,但没有提供检查目录是否存在的函数,我们可以用Windows API函数FindFirstFile实现这个功能.程序实现如下: 设char *Dir为带判断的目录 bool Exist; // 最后结