某从cb过渡到delphi快20天了,略有不行惯,而讲这两者差异的文章也很少,所以想集思广益,听听大家的建议和观点。本人分不多,请谅解。
解决方案 »
- lookup字段在Sql server上出错的问题!
- 100分求 超级简单问题, ADO批量修改数Access的记录集的问题.
- 请高手出招,Ocx(ActiveForm)问题,压缩和做数字签名是一对矛盾吗?Up有分。
- dbexpress+mysql(TSQLQuery)的郁闷,郁闷问题
- 如何在fastreport中显示两张表的数据呢?
- sql语句问题?可能有点难??
- 如何将一个字符串转换成一个对象的名字
- 请问高手这怎么解决?
- 在线等待!!!pagControl问题
- delphi关于acess数据库的压缩!
- 能否截取隐藏窗口的图像?
- 搜寻多数据库协同工作的文档,sql server 加sybase! up有分
与其说bcb与delphi的区别,还不如说是c++和object pascal的区别:
c++ object pascal
{ begin
} end
type Var var: type
#include uses
指针-> 指针^.
= :=
== =
!= <>
% mod
||(|) or
&&(&) and
switch case
func() func或者func()
支持多继承 单继承(基类只有一个,但可用接口实现多继承)
c++中
class a a1;此时a1就创建了
同样的情况在delphi中呢?
c中的return在pascal也没有对应的。
难道只能用result := xx;exit;代替
访问时: AInstanceVar->AMethod();Delphi: AClass AInstanceVar=AClass.Create(...);
访问时: AInstanceVar.AMethod();从语法上,Delphi里面的类指针变量语法相当于C++里面的引用。如果C++模拟Delphi的语法,可以这样写: AClass & AInstanceVar=*(new AClass(...));
AInstanceVar.AMethod();在Delphi中,i++这类的语法变成了Inc(i),同样i--对应于Dec(i)
Delphi中,for语句写法是
for I:=0 to count-1 do begin
...
end
Delphi中,dpr文件,也就是工程文件中,begin和end之间相当于C++的main函数;也就是说,dpr文件也是一种Pas文件。
Delphi -- C++ 文件编译产物对比
Delphi C++
pas文件中的implementation上部 源代码文件 h,hpp
pas文件中的implementation下部 c,cpp
dpr 项目文件 主函数所在cpp
dfm、xfm 窗体文件,相当于资源 res,rc
inc 预处理头文件 h,hpp
dcr 组件资源文件 res
dcu pas文件编译之后的产物 obj+hpp文件
bpg 项目组文件 workspace文件 Delphi中声明变量顺序和C++相反,是变量名+冒号+类型,整数写法是Integer。变量声明之前要加var。
例如
var
I:integer;
Delphi中,函数根据是否有返回值,分为function和procedure两种。例如:
function AddTwoNum(x,y:integer):integer;
procedure DoSomething(v:double);
在delphi中要创建对象必须显式调用构造函数。比如
var
str :TStrings; //抽象类
begin
str :=TStringList.Create;
end;
c中的return对应Delphi中的result;如果直接返回,那么就用exit;搞定
Delphi中的所有的类变量都是隐指针,也就是说,起到指针的作用,但语法上和C++的引用一样。
在C++中,“AClass a1;”的写法实际是创建了AClass的一个实例。
在Delphi中对等的 a1:AClass;却只是声明了一个引用变量。
在Delphi中,两个类实例变量a1:=a2的意思是把a2所指向的东西让a1也指向,相当于C++中的两个指针赋值。
Delphi中,工程文件*.dpr中的begin和end之间相当于C++的WinMain函数或main函数。
一般都是
AComponent.free;
AComponent:=nil;
或写作
FreeAndNil(AComponent);
一般都是
AComponent.free;
AComponent:=nil;
或写作
FreeAndNil(AComponent);