C++ Builder 和DELPHI 真的只是支持语言不同吗?(0分)

  • 主题发起人 主题发起人 眉宇
  • 开始时间 开始时间

眉宇

Unregistered / Unconfirmed
GUEST, unregistred user!
我昨天去应聘的公司说需要用C++ Builder 。 我可以去吗?
 
当然可以了!不过你懂c语言吗!
delphi和c在具体的实现上有所不同,不过思想是一样的都是面相对象!
 
其实,二者还是有很大区别的,,不能说只是语法不同.
但简单的应用一般涉及不到.
 
Delphi和C++ Builder的编辑器确实有很多不同,Delphi提供了很多辅助编辑的特性,帮助
您快速编程。

单单就程序代码而言也有很多细节上的不同,不过VCL控件一样已经给我们节约了很多时间。
 
不同还是很多的
 
使用前还是先看看"C++"的书,不然你可能会死得很惨.

如果你不知道#include,TButton *button1=new TButton(this);是什么意思,
那还做什么程序?

虽然说都用的是VCL,但具体细节上有出入,调用方法上也有很大区别。
应该说:C++Builder只借用了VCL框架,其它的还是它自己的。BC+VCL=BCB.
 
说的对阿
 
我好害怕
55555
 
语言都是相通的,不要害怕,其实bcb也不是什么太难的东西,
我的一个同事笨得要命,所以才学习bcb。
象您小人家这么聪明,还不是易如反掌。
 

>>>>转载C++Builder 技术内幕

自从Borland推出了Borland C++ Builder之后,许多人时常会询问BCB和Delphi有什么不同?除了使用的语言(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++ BCB 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引擎之中,并没有指定 ActiveX元件使用的执行绪模式.所以由Delphi 3.02制作的ActiveX和Act-iveFrom都无法正确的在IE4.0之中显示出来.这并不是Delphi 3.02的臭虫, 而是Microsoft改变了ActiveX元件游戏的规则.此外由于IE4.0之中有一些 臭虫的存在,所以我建
议你升级到4.01或是4.02.

#处理Windows讯息的技术差异

BCB 3.0和Delphi 3.02在处理Window计算的方式上也有相异这处. 基本上BCB和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) 和动态函数(DynamicFunction)
Borland C++ Builder 3.0---混合虚拟函数和动态函数,以及类似MFC 的MessageMAP的事件处理函数的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++产生的DLL成为能够让BCB使用的DLL.

# RC Import精灵

对于许多使用BC++和VC++的人来说,一定使用了Resource Workshop或是AppStudio设计了许多的资源文件. 那么这些储存对话盒或是其他视窗资源的文件如何在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++工具移转到BCB3.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产品的人高兴见到的事情.
 
不好意思,窗口太小,换行不方便,建议版主将这个窗口开大些,反正也是浪费,以后
换行就方便了!
 
<<<<<<转载C++Builder技术内幕

VC vs CBuilder JoJoHSU
其实很久以前我就想写这篇文章,其原因一方面是因为笔者深深感觉到C++ Builder的确是一个先进与强大的程式开发工具,但更最重要的一点是,我深信C++ Builder能给公司带来巨大了商业利益与生产力的大幅提升,我可以假装没看到这几点,但是基於良心与责任我不能不花点时间来跟大家分享一下我的看法与心得。

C++ Builder的前身是Borland C++,Borland C++ 所使用的 Application Framework是OWL,而OWL以物件导向的角度来看,也的确比MFC先进很多(这在学界早有定论),但是在市场上却叫好不叫座,直到Imprise(以前的Borland)推出以VCL为Application Framework的Delphi之後,这才一炮而红。

虽然Delphi的VCL非常强大与好用,但是Delphi所使用的是OOPascal语法,和C++不同,直到後来,Imprise才推出以C++为程式语言的C++ Builder,而其所使用的Application Framework正是赫赫有名的VCL。

VCL的全名是“Visual Component Library“,它是一种新一代的Application Framework,以元件化、视觉化为设计的方向。VCL的兴起,起源於OWL和MFC都日见庞大与痴肥,不利於日益复杂的程式开发趋势,於是Imprise的设计小组决定开发一套更物件导向化的Application Framework,使程式设计师能以视觉化的观念、元件重用的观念来快速设计出各式各样的应用程式,将物件导向的威力与精髓发挥的淋漓尽致,相形之下,OWL和MFC都只算过时与半子的Application Framework。

果然~C++ Builder一推出後,在微软的大军压境下以及人们西瓜靠大边的心态下,仍然引起了一阵旋风,在News上许多程式师表示它们对C++ Builder的肯定与激赏,更有人指出,根据经验,在微软的市场优势之下,Delphi和C++ Builder仍能欣欣向荣,这表示Delphi和C ++ Builder的产品水准不是只赢微软产品几个百分点,而是数十至数百个百分点,否则Imprise的产品早就消失不见了。

到底C++ Builder的特性与优点在哪里呢?这对於我们公司又有什麽利弊呢?我的观点与分析如下。大家想一想,当我们使用Visual C++来开发程式的时候,最痛苦的事情是什麽?答对了~那就是GUI的设计。根据经验,通常我们利用Visual C++开发一套软体时,设计GUI所花的时间几乎占掉程式开发周期的三分之一~甚至到二分之一以上,而设计和界面无关的核心程式通常只占了不到二分之一左右至三分之二的时间,但是使用C++ Builder则可以大幅简化这个问题。C++ Builder的VCL提供大量的各式各样GUI软体元件,让我们可以将大部分的心力放在核心程式码的设计上,而不必跟Windows系统的讯息、界面去搏斗。

C++ Builder的Compiler在功能上跟Visual C++都一样,Win32 API等都可以呼叫与使用(VCL就是架构在Win32 API之上,没有不相容的问题,只是包装的更高明,也非常有弹性),你不用担心目前有什麽事情是Visual C++可以做而C++ Builder做不到的,进而拒绝使用C++ Builder,抱持这样的观点就好像为了健康而不坐汽车,却坚持骑脚踏车从淡水来上班一样因噎废食,在网路许多非常有经验的程式设计师会告诉你这是多虑了。曾有人比喻的很传神,如果Visual C++是手排车,那C++ Builder就是手自排两用车(看过三菱的Sportsmode手自排两用车吗?)。

C++ Builder的程式设计细节是清楚而透明的,除了Application Framework的运作保有神秘感之外(MFC也是),所有的程式码与档案相关的档案都是可以掌握与观看的,不像某些开发工具,程式设计师许多事情是无法掌握的,而C++ Builder 所产生的码大小与产生的时间都和Visual C++ 都是同级的(我指的是胜负差距都不大,到要一提的是,C++ Builder 3.0采用一种技术,可以使得第二次以後的Compiling速度提升五倍以上,笔者可以证实这一点)。

我的观点是,我们公司非常适合大量采用C++Builder作为程式开发工具,当然啦,为了相容性的考量和母公司有特殊要求的专案除外。由Visual C++转换到C++ Builder不是很严重与痛苦的事情,反而会觉得很快乐,这就好像开手排车人改学自排车一样,甚至可以更掌握C++ Builder的威力。

利用C++ Builder来开发程式,我们可以快速的产生程式的GUI layout和prototype,在後续调整程式界面的调整周期中也非常的方便,我个人认为至少可以比
Visual C++节省三至五倍以上的时间。

除了某些特殊需求的专案之外(例如版本升级,而原来的版本是VC开发的,或者参考改写的程式码是用VC写的,事实上C++ Builder也可以支援MFC),我看不出来公司有什麽专案的规模或内容非要靠Visual C++不可,自己找罪受不说,也违反了“Build a high performance company“的目标,而将大量的资源投注在落後的工具上,程式生产力也无法巨幅提升。因此我建议公司应该大量而全面性的鼓励员工使用并熟悉C++ Builder成为第一线的程式开发工具,根据我的浅见,这样的投资不但回收快速,而且效果宏大。

简而言之,C++ Builder同时兼具C++程式语言的威力和Visual Basic这种 Rapid
Development Tool的视觉化程式开发环境的便利,土法炼钢或必先利其器,决定就在你了。
 
后退
顶部