当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

将forbcb5的组件移植到bcb6中

   大家都知道bcb6已经出来一段时间了,在稳定性和易用性方面有了很大的提高。尤其是网络方面的功能,如对webserver,snap等都提供了很方便的开发方式。许多朋友也许早就跃跃欲试,可有一个很重要的原因阻止了他们对bcb6的使用,那就是以前大家用bcb5时搜集了很多for bcb5的组件,可这些组件有很多并没有及时的出for bcb6的版本。My god,我的ehlib,mwedit,strcon.......,很多朋友已经尝试了在bcb6下对原来的组件进行重新编译,可总会出现编译失败的局面,是bcb6不向下兼容么?不,只要你有源代码,理论上可以把for bcb5的任何组件进行移植,只不过需要你对原码进行一些小小的改动

而已。
现在我就以一个非常经典的组件mwedit 0.92为例:

1.因为在bcb6中toolsapi目录中已经取消了DsgnIntf.pas,而把DsgnIntf.pas中的代码分散到了DesignIntf,designeditors,vcleditors单元中,所以要将

mwEditPropertyReg.pas中的DsgnIntf用DesignIntf,designeditors,vcleditors代替

2.编译bpk时会产生“找不到DesignIntf.dcu,designeditors.dcu

,vcleditors.dcu错误”。好办,你随便建立一个新的工程,把toolsapi目录中的designIntf.pas,designeditors,pas,vcleditors.pas添加到工程中,编译一下就能产生相应的dcu,obj文件,把产生的dcu,obj文件拷贝

到bcb6下的lib\\obj目录中即可。

3.编译bpk时会产生“不能找到proxies.obj的错误,可borland又没有提供proxies.pas单元,我们无法生成proxies.obj文件,怎么办?其实根本无需proxies.obj文件,因为在bcb6中已经把proxies.obj的代码编译进了designide.bpi(dephi6在designied.dcp)。所以在bpk的工程中的requires中添上designide.bpi即可解决这个问题。

4.终于可以用了!!别,程序如果用到了mwedit中的控件,编译时会发生错误,因为mwcustomedit.hpp中的常量WM_MOUSEWHEEL 与系统有冲突,所以将mwcustomedit.hpp中的static const Word WM_MOUSEWHEEL = 0x20a;这一行注释掉即可。

这是一个很典型的例子,您使用其他组件时根据编译出错信息,一般照此改改即可。祝大家玩的愉快。


注:mwedit是一个很好的edit组件,提供了sql,c++,delphi等语法高亮显示的功能,而且完全免费,可惜作者只提供了for bcb34的版本,如果在bcb5下可以直接编译通过,在bcb6下就费些事了^_^。

相关内容
赞助商链接