精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>编辑、编译、调试与发行>>BCB 3 V.S. Delphi 3

主题:BCB 3 V.S. Delphi 3
发信人: love1974()
整理人: wenbobo(2002-12-24 09:19:54), 站内信件
         Borland C++ Builder 3 V.S. Delphi 3 
    自从Borland推出了Borland C++ Builder之后,许多人时常会询问BCB和Delp
hi有什么不同?除了使用的语言(C/C++ v.s. Object Pascal)之外,是不是都一样
?也有人经 
常会不满的指出,是不是BCB 一定会在功能上落后Delphi一个版本,那么使用BCB的
人比 
起Delphi 的程序员来说,是不是代表全用BCB的人是二等公民. 
    说实话在BCB 1.0中由于Borland主要的目的是推出使用C/C++ 语言的RAD工具
所以 
BCB 1.0和Delphi 2.0的功能上几乎是一样,但 是BCB 1.0却远比Delphi 2.0晚了
一年 
的时间才推出.以致造成许多 人有上面的印象和问题的出现.今年的三月Borland
又推 
出了BCB3.0, 虽然BCB3.0距离Delphi3.0推出的时间缩短10个月,但是BCB 3.0的功
能 
是不能仍然是复制Delphi 3.0的功能呢? 
    虽然BCB3.0和Delphi3.0在整合发民环境,VCL元件,和许多地方仍然非常的类
似, 
但是在BCB3.0的技术底层却已经和Delphi3.0仍然是以 VCL元件类别为主,但是在
建立 
ActiveX元件和N-Tier的应用程序技术上 将会走向不同的方向.这是因为C/C++和
 
Object Pascal语言上差异的原 因.在本篇文章中,我将从技术的角度讨论C++ BC
B 3.0 
和Delphi 3.0的 不同,希望能够让使用这二个开发工具的程序员都有所了解. 
  
     # BCB 3.0 在除错功能的大幅领先 

    对于C/C++的使用者而言,除错是平日工作中的少不了的事情.所以一个C/C++
编译 
器的除错功能就直接影响了生产力.在BCB 3.0中Borland对于 BCB3.0除错功能的
强化 
会让Delphi3.0的使用者羡慕的不得了.BCB3.0除了 拥有Delphi3.0对于双数检视
的工 
具视窗,加快了检视字串变数的之外,更 加入了强劲的模组检视功能.这个模组检
视器 
可以让你巨细靡遗的观看应 用程序使用权的所有DLL以及专案中每一支程序的所
有的 
方法.在中断点之 处启动模组检视器检查应用程序.你可以看到模组检视器显示了
多么 
详细的资讯. 
    更令人惊讶的是,BCB 3.0在应用程序执行时期居然能够显示出类似物件检视
器的 
视窗,让你检查一个VCL元件的所有资讯.包括特性值,方法和事件处 理函数.这个
除错 
功能实在太棒了,因为有了它之后,你就可以掌握执行时期 VCL元件所有的变化. 

    此外BCB 3.0也包括了一个Event Log可以让检视应用程序执行时发生的事件
.这 
些新的除错功能都是Delphi3.0所没有的低层除错能力.除了除错功能 之外,BCB3
.0也 
允许程序员对于编译器更好的控制能力.图形是BCB 3.0中新的 高等编译器选项功
能. 
你可以看到BCB和一往的BC++一样允许你更进一步的控制 产生的程序码品质.请注
意在 
这些选项中有一项MFC Compatibility. 当你需要 在BCB3.0中编译MFC的程序时,
你必 
须选择这个选项,因为MFC使用了许多不正确 而且奇怪的C/C++语法,为了要让BCB
的编 
译器能够顺利的编译MFC程序,这个选 项可以让编译器不致产生严重的错误. 
  
     #制作ActiveX/N-Tier远程服务器的技术差异 

    Delphi 3.0是PC级的工具中第一个真正可以开发N-Tier的开发工具. 另外 

Delphi3.0也是所有Borland的工具中支援COM/ActiveX最为完整的工 具,但是现在
这个 
局面将被BCB 3.0打破.因为Borland现在也给予了C/C++ 使用权者相同的强大功能
,让 
C/C++的程序员也可以设计出分散式物件计算 应用程序.此外BCB 3.0也可以让你
一个 
步骤便制作出ActiveX元件.但是在 产生分散式物件和ActiveX元件时,Delphi3.0
和 
BCB3.0差别最大的地方.下 面列出这两个产品使用的引擎. 
  
     Delphi 3.0 ----DAX (Delphi ActiveX Engine) 
     Borland C++ Builder 3.0 ----ATL (ActiveX Template Library) 
  
    它们使用的引擎不同的原因除了Object Pascal不支持样版(template) 外,另
外的 
原因便是让BCB产生的ActiveX元件和DCOM服务器能够比较小.此 外BCB 3.0藉由使
用 
ATL可以让C/C++的程序员在未来跟上MicroSoft最新的 技术,例如对于COM+的支援
.例 
如,当你使用BCB3.0建立远端的DCOM服务器, 可以启动ATL选项指定DCOM服务器使
用的 
样例方式以及使用的执行绪模型. 当你使用BCB3.0的ATL选项制作ActiveXForm时
,它可 
以结合资料库的能力, 让你开发出可以直接在IE浏览器中执行的资料库应用程序

    在这里有一点很重要的是在Delphi 3.02的DAX引擎之中,并没有指定 Active
X元件 
使用的执行绪模式.所以由Delphi 3.02制作的ActiveX和Act- iveFrom都无法正确
的在 
IE4.0之中显示出来.这并不是Delphi 3.02的臭虫, 而是Microsoft改变了Active
X元件 
游戏的规则.此外由于IE4.0之中有一些 臭虫的存在,所以我建议你升级到4.01或
是 
4.02. 
  
     #处理Windows讯息的技术差异 

    BCB 3.0和Delphi 3.02在处理Window计算的方式上也有相异这处. 基本上BC
B和 
Delphi都是使用VCL这个元件类别,所以在处理Window讯息上 也是由VCL元件来处
理和 
分派的.下面的表格比较了VCL, OWL以及 MFC三种 FrameWork在处理Window讯息上
的异 
同: 
  
     * Windows讯息处理的处理方式: 
    VCL元件类别---使用虚拟函数(Virtual Function) 和动态函数(Dynamic 
Function) 
    OWLFramework(2.0之后)---使用虚拟函数 
    MFCFramework---使用Message MAP 

     * Windows讯息caching: 
     VCL元件类别---否 
     OWLFramework(2.0之后)---是 
     MFCFramework---否 

     * 处理Windows讯息的速度: 
     VCL元件类别---良好 
     OWLFramework(2.0之后)---优 
     MFCFramework---优 
  
    请注意,由于VCL元件类别在处理Window讯息时除了需要分派Window讯息到特
定的 
讯息处理函式之外,它也会负责触发VCL上相关事件处理函数, 所以在处理Window
讯息 
的速度上会比OWL以及MFC稍慢,但是在功能上却比 OWL和MFC更为丰富. 
    在BCB 3.0中由于它使用的C++编译器是BC++5.3,而且使用的Delphi编译器也
是 
Version 11,更重要的是由于BCB 3.0除了使用VCL类别进行VCL元 件的事件处理函
数的 
window讯息分派之外,它也使用了类似MFC的Message Map来分派使用者定义的讯息
处理 
函式,所以在处理window讯息的速度上比 Delphi 3.02来得快速. 

     #处理windows讯息的方式: 

    Delphi 3.02---使用虚拟函数(Virtual Function) 和动态函数(Dynamic 
Function) 
    Borland C++ Builder 3.0---混合虚拟函数和动态函数,以及类似MFC 的Mes
sage 
MAP的事件处理函数的window讯息分派之外,它也使用了类似MFC的Message Map来
分派 
使用者定义的讯息处理函式,所以在处理window讯息的速度上比 Delphi 3.02来得
快 
速. 
  
    我分别使用Delphi3.02和BCB3.0撰写了一段处理window讯息1000次的示范程
序,在我的Pentium133,64M Ram的机器上执行的结果如下: 
  
    处理1000讯息的时间: 
    BCB 3.0-------4.08 
    Delphi 3.02---4.89 

    从上面的结果也可以证明BCB在处理window讯息方面是比Delphi3.02来得稍为
快 
速.此外在ActiveX元件方面由于BCB3.0也是使用ATL的Message MAP 方式,所以在
这方 
面比Delphi 3.02有较好的表现. 
  
     # 系统功能的支援 

    BCB3.0除了前面比较偏向底层技术的革新之外,它也提供了一些重要的工具让
先前 
使用BC++或是VC++的开发者可以很快地转换到BCB的开发环境之中. 第一个工具是
所谓 
的资源转换精灵,它可以帮助你转换资源文件的内容成为BCB使用的表格和VCL元件
.第 
二个工具是Borland推出的新工具Comm20MF.这个工具可以让你转换VC++产生的DL
L成为 
能够让BCB使用的DLL. 

     # RC Import精灵 

    对于许多使用BC++和VC++的人来说,一定使用了Resource Workshop或是App 

Studio设计了许多的资源文件. 那么这些储存对话盒或是其他视窗资源的文件如
何在 
BCB 3.0中使用呢?是不是需要BCB使用的元件重新设计呢?当然重新设计所有的资
源文 
件将会是一件令人痛苦的事情.Borland为了解决这个问题,特别为所有使用BCB 3
.0的 
人提供了一个工具RC Import精灵.你可以在BCB的Tools选单中找到它. 
    RC Import精灵可以帮助你读取由BC++和VC++设计的所有资源,然后再把这些
资源 
转换为BCB使用的表格或是VCL元件.如此一来你就可以直接在BCB中使用这些资源
,并且 
结合所有BCB提供的VCL元件. 
    有了RC Import精灵之后,你原先不管是使用BC++或是VC++设计的资源文件都
能够 
立刻转换为BCB3.0的表格或是VCL元件,可以大幅减少你从这二个C++工具移转到B
CB3.0 
所需要花费的时间. 

     # COFF函数库的支持 

    在传统上Borland和Microsoft的C++编译器所产生的Object文件格式便是是不
一样 
的.Borland一直是使用OMF,而Microsoft则是使用COFF格式. 这造成许多由VC++编
译的 
DLL无法让BCB使用的情形.Borland为了解决这个问题,所以在BCB 3.0中提供了这
个工 
具让开发者能够转换VC++的DLL档案格式成为BCB使用的OMF形式.如此一来就不会
再有 
以前的困扰了.据我所知,Borland在未来会继续强化这个工具,让它功能更为强大
,例如 
可能在未来也能够转换静态的函数库(.LLB)文件. 
    除了上述的系统功能支持之外,事实上BCB3.0的连结器现在也能够产生正确 

kernel-mode的驱动程序文件格式.这代表你已经可以使用BCB 3.0编写驱动程序了
.从 
这点来看BCB3.0对于系统工程师是非常有帮助的. 
    BCB的程序员终于可以吐一口气了,因为BCB3.0在许多方面都领先了Delphi3.
0.从 
的VCL元件类别3.5版,高等多重专案管理工具,到强劲的低层除错功能,同时支援 

VCL,MFC,OWL都显示BCB3.0是一个同时兼顾应用程序设计员和系统工程师需求的工
具. 
此外由于BCB3.0继承了Delphi3.0对于Multi-Tier,Internet应用程序功能方面的
经验, 
所以BCB是第一个让C/C++程序设计员可以开发分散式计算环境应用程序的工具. 
在未 
来 BCB也将会同时支援Microsoft的COM+和CORBA等分散式物件技术的标准. 这代
表使 
用BCB,你就不必担心未来你的应用程序会产生无法继续执行问题. 
    当然,对于Delphi的使用者而言,所有由BCB3.0开发出来的技术,也都将出现在
 
Delphi未来的版本之中.从这个角度来看,BCB和Delphi将会是相互超前,且吸收彼
此功 
能的竞争局面.这对于BCB和Delphi使用者都是有利的,因为这二个产品在这种情形
下将 
会进步得更为迅速,相信这是所有使用Borland产品的人高兴见到的事情。 
     {[email protected]

  
  

--
love1974[灌水版(还未开盘)斑竹] 灌翻网易,一大快事
太太平平,不是我活着的目标;不温不火,不是我的性格。是云就该下雨,是火就该发光。
那罐星砂送給你
╭╯  ╰╮╭╯╰╮    願你心想事成
║▃▃▃║║☆★║  這罐海水留給我

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]

[关闭][返回]