olor),将 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 文本
Pascal True 关键字 Pascal True 关键字 if 语句 块首 块尾 块尾(第 2 种形式) Pascal then 语句 Pascal do 语句 Pascal not 语句 Pascal nil 关键字 Pascal case 语句 Pascal case 语句 Pascal self 关键字
True False if begi
n end; end then do. not. nil case of ) Self
true false if( { } } ) 无 ! NULL switch( { this
进行寻找与替换时,应使用 Replace All 选项,但使用时应小心。例如:不能在文件开头 将所有句号换成>,因为每个 C++ Builder 源单元前几行包含带文件名的 include 语句。一 定要先将 Pascal 说明语句(以{开头,}结束)换成 C++说明,然后再替换 begin 和 end 语句。 替换 as end 之类的单词时,应在 Replace Text 对话框中打开 Whole
words only 选项,这样就 保证不会误换长字中的各个字符。注意,有些寻找与替换会带来不良的后果(如把分开文件 名及其扩展名的句号换成>) 。进行寻找替换操作后,文件就混合了 Pascal 和 C++,接下来 要手工完成余下的转换
工作, 要对每种语言有充分的了解, 才能将 Pascal 语法转换成 C++ 语法。 从此你可以随心所欲地处理了,我只想指出转换时要注意的几点。 首先,C++没有对应 Pascal with 语句的项目,以下列代码为例: with MyForm do begin Width := 200; Height := 500; Caption := 'Hello there'; end; 转换成 C++ Builder 时,要具体引用每个属性: MyForm>Width := 200; MyForm>Height := 500; MyForm>Caption := 'Hello there'; 另一个较难转换的 Pascal 语句是 as 语句。Delphi 程序中通常会这么干: with Sender as TButton doClick; 转换成 C++ Builder 时则应这么干: TButton* button = dynamic_cast(Sender); if (button) button->Click(); 另一个需要特别注意的是字串处理。Pascal 的字串操作函数能处理 String 数据类型,而 C++ Builder 则用 AnsiString 类的字串操作函数。 以下列 Pascal 语句为例:
x := StrToInt(Edit.Text); 转换成 C++ Builder 时代码如下: x = Edit>Text.ToInt(); 集合也是 Delphi 的转换成 C++ Builder 时的一个难题。 复用窗体: 也可以不把 Delphi 转换成 C++, 可以在 C++ Builder 中直接使用 Delphi 窗体。 只要 将窗体的.PAS 文件直接加进 C++ Builder 项目中。C++ Builder 即会生成 Delphi 单元的 头,可以在任何引用 Delphi 窗体的 C++ Builder 单元中使用。说明尽管可以将 Delphi 窗 体直接加进 C++ Builder 项目中,但不能用 C++ Builder 窗体设计器编辑这个窗体。窗 体的图形化修改只能在