将DELPHI代码变为BCB代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有时Delphi应用程序与C++Builder应用程序可能需要相互转换。这种转换虽然费时,但并不困难(顺便说一句,进行转换时,我将Delphi与C++Builder同时运行)。

这里只介绍将Delphi变为C++Builder的过程,反过来也差别不大。

将Delphi变为C++Builder主要有两步。

第一步是将Delphi应用程序窗体复制到C++Builder项目中,第二步是修改Delphi 代码。一般情况下这都是没有必要的,除非你想改写为C++代码。

下面详细介绍这两个步骤:

首先要复制Delphi窗体到C++Builder应用程序中。Delphi窗体与C++Builder窗体使用相同的基本格式,但至少有一大差别。显然,窗体文件包含窗体本身和窗体上每个构件的尺寸和位置。但窗体文件中也还包含事件信息。具体地说,窗体文件包括窗体及其构件所建事件处理器的描述。在Delphi窗体文件中,事件引用的事件处理器是Delphi方法,而在C++Builder窗体文件中,事件指向C++Builder事件处理器。自然,要删除Pascal 引用才能在C++Builder中使用窗体。你不一定要知道这些细节,但将Delphi转为C++Builder时必须考虑这个因素。

复制Delphi主窗体的步骤如下:

1.打开Delphi项目并记下主窗体文件名及其Name属性。

2.切换到C++Builder中,选择主窗体,将Name属性变为与Delphi项目主窗体同

名。保存C++Builder项目,保存主窗体单元,用Delphi中窗体的同一文件名

(除去.PAS扩展名)。将项目存为与Delphi项目相同的名称。

3.切换到Windows Explorer中,将Delphi的项目目录中的主窗体窗体文件(.DFM文件)

复制到C++Builder项目目录中。一定要复制文件并不是移动文件。Windows

Explorer警告说目标目录中已经有同名文件。单击Yes改写C++Builder目录中

的窗体文件。如果没有这个警告,则一定是保存C++Builder项目时出了错。

4.切换回C++Builder,出现一个对话框,说Module xxx.cpp's time/date has changed.

Reload?单击Yes重装窗体。窗体重装后,即会包含Delphi窗体中的构件。

5.确保窗体选中并选择C++Builder主菜单中的Edit|Select All选择所有窗体的构

件。然后选择主菜单中的Edit|Cut和Edit|Paste,这样就把各个构件的所有声明放到

主窗体的头文件中。

6.这时要从C++Builder窗体文件中删除所有Delphi的事件处理器的引用,这很简

单:

a)选择C++Builder主菜单中的File|Save或单击工具条上的Save File

b)C++Builder会显示每个事件处理器的消息框。每次出现对话框时单击Yes,

以便删除所有事件处理器。也许要单击Yes几十次才能删除所有事件处理器

(我曾为一个窗体删除100个事件处理器!)。

这样就复制了窗体,可以转入代码转换了。说明:Delphi应用程序中的每个窗体都要重复上述步骤。

转换代码从Delphi向C++Builder转换代码要比复制窗体复杂得多,有许多方法可用,但我用的方法如下:

首先要找出编程人员(而不是Delphi)生成的各个变量和方法。找到Delphi单元中的主窗体类声明。记下private或public部分声明的各个变量和方法。将这些声明复制到剪贴板上。

例如,Delphi类声明可能如下所示:

Private

{

Private declarations

}

DrawColor:TColor;procedure

DoDrawing;function

SetDrawColor:Integer;

这里要复制DrawColor、DoDrawing和SetDrawColor的声明。切换回C++Builder,在代码编辑器中显示主窗体的头。找到private部分并粘贴剪贴板中的代码。

将粘贴的声明转换为C++语法。

例如,第3步的声明可能转换为如下:

private://User declarations

TColor DrawColor;

void DoDrawing();

int SetDrawColor();

切换回Delphi。在Delphi单元的implementation部分,找到类声明中声明的方法(这里为DoDrawing和SetDrawColor),将Delphi单元中的方法复制到剪贴板上。

切换到C++Builder中,将第6步复制到剪贴板上的方法粘贴到窗体源单元中。将方法的Pascal语法转换为C++语法。别管函数体和begin与end语句,这些将在后面处理。

下一步要将Delphi单元中的事件处理器的代码复制到C++Builder单元中。我认为最好的办法是从Delphi单元的implementation部分开始往下干。遇到Delphi单元中事件处理器时的做法如下:

1.记下事件处理器名,如果是Button1Click,则表示构件Button1的OnClick事件的事件处理器。

2.将事件处理器代码复制到剪贴板上。

3.切换到C++Builder中,产生与复制代码的事件处理器相符的事件处理器。

4.将Delphi代码从剪贴板粘贴到事件处理器中。对Delphi单元中每个事件处理器重复1到4步。

完成之后,C++Builder项目中就有几个事件处理器了。这些事件处理器包含Pascal 代码,还要变成C++代码。这可以利用C++Builder Replace Text对话框进行。

下表列出了寻找的Pascal语法和替换的C++语法文本。寻找和替换文本中的空格用小句号表示。通常应按表的顺序进行寻找和替换操作。

Delphi转化为BCB的替换文本:

说明Delphi文本替换为BCB文本

等于操作符====

赋值操作符:==

不等操作符<>!=

成员操作符.->

字串引号‘“

开始说明{//

结束说明}无

相关文档
最新文档