将DELPHI代码变为BCB代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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文本
等于操作符====
赋值操作符:==
不等操作符<>!=
成员操作符.->
字串引号‘“
开始说明{//
结束说明}无