1)分割编译问题:
DELPHI还不能把单个的单元进行独立的编译,这对团队开发很不方便,
同时,也希望能象C那样,能把定义和实现可以分开在不同的文件中,这样,在大型开发中就方便多了。2)局部变量不能赋初始值问题:
既然全局变量可以赋初值,很搞不懂为何局部变量就不行了?如果我要定义一个稍多的局部二维数组,
非得一个一个地去写,真累死人呀。3)相同的数组类型不能赋值:
比如:
var
arr1:array [0..10] of integer;
arr2:array [0..10] of integer;
begin
arr1:=arr2;
end;
就通不过,要这样做才行:
type
tarr= array [0..10] of integer;
var
arr1:tarr;
arr2:tarr;
begin
arr1 := arr2;
end;类型都是一样,为何就不能直接互相赋值呢?比如arr1 := arr2 ,非得用循环再赋一次,
或者,非得要定义另外一个类型才行,这不是脱裤子放P,多次一举吗??4)相同的指针类型不能赋值:
跟3)的数组一样,类型一模一样,也不能互相赋值,非得要另外定义,实在纳闷呀。5)我们都知道C的指针可以用数组的形式来访问,但DELPHI,就是不行,为什么不改进这点,很难吗?
6)^char 和pchar
既然用write 语句可以输出pchar 类型的字符串,为什么不能输出^char的字符串呢??
感觉BORLAND对指针问题上,有些混乱.其实我觉得根本不需要引进PCHAR,PINTEGER等类型,
直接改进^char ,^integer ,^float等类型就可以。引进P字头系列后,感觉指针的用法有些迷惑。7)多级指针问题:
在C中,可以定义方便地定义多级指针
比如 int **p;而DELPHI却要
type
tpint2 = ^tpint;
tpint = ^integer;
var
p:tpint2;为什么不能直接写成:
type
tpint2 = ^^integer;或者
p:^^integer呢?定义那么多类型多,使程序句繁琐多了。并且更严重的是,很多标准库,只能用规定的类型,
用定义的就是不行,即使看上去一样的类型,也不行。
比如strcopy函数等,你就得用pchar ,用^char就拉倒,还得转换成PCHAR,真太乱了.
而在C里面却那么的一致。取地址也是一样,我用了@@P等形式存取多级指针地址,就是不行,但用p^^等形式存取数据好象又可以。
奇怪呀.
总之,感觉DELPHI的指针运算有些乱。不象C那样的一致性。
8)多目运算符 希望DELPHI 能引进 += ,-= ,/= ,*=等简写形式。
现在FREE PASCAL都可以实现这些功能,非常方便。9)文件SEEK;
我记得C好象可以用文件头向文件尾移动,也可以从文件尾向文件头移动,非常灵活,
而DELPHI只能从头向尾移动,如果在大型文件处理中,效率就可要打折扣了10) UNICODE 问题。
一直搞不懂,BORLAND对这个问题没进展,但这个问题又是那么地重要。11)强烈要求开发其它平台的编译器
以上是我目前最希望BORLAND 能改善的问题,不知道还有哪些其它问题?各位说说??
DELPHI还不能把单个的单元进行独立的编译,这对团队开发很不方便,
同时,也希望能象C那样,能把定义和实现可以分开在不同的文件中,这样,在大型开发中就方便多了。2)局部变量不能赋初始值问题:
既然全局变量可以赋初值,很搞不懂为何局部变量就不行了?如果我要定义一个稍多的局部二维数组,
非得一个一个地去写,真累死人呀。3)相同的数组类型不能赋值:
比如:
var
arr1:array [0..10] of integer;
arr2:array [0..10] of integer;
begin
arr1:=arr2;
end;
就通不过,要这样做才行:
type
tarr= array [0..10] of integer;
var
arr1:tarr;
arr2:tarr;
begin
arr1 := arr2;
end;类型都是一样,为何就不能直接互相赋值呢?比如arr1 := arr2 ,非得用循环再赋一次,
或者,非得要定义另外一个类型才行,这不是脱裤子放P,多次一举吗??4)相同的指针类型不能赋值:
跟3)的数组一样,类型一模一样,也不能互相赋值,非得要另外定义,实在纳闷呀。5)我们都知道C的指针可以用数组的形式来访问,但DELPHI,就是不行,为什么不改进这点,很难吗?
6)^char 和pchar
既然用write 语句可以输出pchar 类型的字符串,为什么不能输出^char的字符串呢??
感觉BORLAND对指针问题上,有些混乱.其实我觉得根本不需要引进PCHAR,PINTEGER等类型,
直接改进^char ,^integer ,^float等类型就可以。引进P字头系列后,感觉指针的用法有些迷惑。7)多级指针问题:
在C中,可以定义方便地定义多级指针
比如 int **p;而DELPHI却要
type
tpint2 = ^tpint;
tpint = ^integer;
var
p:tpint2;为什么不能直接写成:
type
tpint2 = ^^integer;或者
p:^^integer呢?定义那么多类型多,使程序句繁琐多了。并且更严重的是,很多标准库,只能用规定的类型,
用定义的就是不行,即使看上去一样的类型,也不行。
比如strcopy函数等,你就得用pchar ,用^char就拉倒,还得转换成PCHAR,真太乱了.
而在C里面却那么的一致。取地址也是一样,我用了@@P等形式存取多级指针地址,就是不行,但用p^^等形式存取数据好象又可以。
奇怪呀.
总之,感觉DELPHI的指针运算有些乱。不象C那样的一致性。
8)多目运算符 希望DELPHI 能引进 += ,-= ,/= ,*=等简写形式。
现在FREE PASCAL都可以实现这些功能,非常方便。9)文件SEEK;
我记得C好象可以用文件头向文件尾移动,也可以从文件尾向文件头移动,非常灵活,
而DELPHI只能从头向尾移动,如果在大型文件处理中,效率就可要打折扣了10) UNICODE 问题。
一直搞不懂,BORLAND对这个问题没进展,但这个问题又是那么地重要。11)强烈要求开发其它平台的编译器
以上是我目前最希望BORLAND 能改善的问题,不知道还有哪些其它问题?各位说说??
解决方案 »
- 用bde连接BDF数据库,出现capability not supported
- 在系统托盘建立了一个图标和谈出菜单,菜单谈出后不能消失怎么办?
- 怎样用SendMessage实现将窗口的BorderStyle改为bsNone的效果?也就是隐藏窗口的标题栏?
- 这样的报表程序怎么实现!有例子吗
- 请问关于窗口操作的函数(例如使窗口关闭功能取消)。帮忙进来看看。
- 使用EXPRESS的SQLQUERY中 出现不能操作的提示!!!
- 100分!求asdl拨号软件是怎么实现的?Enternet300比及winxp下的拨号软件功能就不全了
- 如何获取数据集中某字段纪录的最大长度
- 谁能发一个‘dsgnintf.pas'文件给我,并告诉我这个文件用途?谢谢
- 如何把窗体的最大化按钮灰化?(不是没有)
- 我要做一个服务器,看能否承载一定的线程,请问大家哪里有示例
- 请高手看一下这个简单的过程
arr1,arr2:array [0..10] of integer;这样就可以了
不过我想过一段时间也就好了。
不过话说回来,楼上提的一些问题其实的确是D应改进的东西。非常可惜的是Borland发了那么DELPHI都没有改进一下。
还有的就是异常处理关键字也是比较啰嗦象:
C#或Java里的
try
{
}
catch(Exception e)
{
}
finally
{
}
Delphi就必须这样:
try
try
...
except
...
end;
finally
...
end;
或
try
try
...
finally
...
end;
except
...
end;
异常处理多了,感觉代码缩进得让人发晕!
DELPHI还不能把单个的单元进行独立的编译,这对团队开发很不方便, 同时,也希望能象C那样,能把定义和实现可以分开在不同的文件中,这样,在大型开发中就方便多了。 =================================================================================================
--->谁说不行,用命令行直接编译
定义和实现本来就是分开的,只不过是在同一个文件中的不同部分interface implementation
分开在不同的文件中是导致C编译慢的一大原因。并且出现容易出现链接时找不到符号的麻烦。2)局部变量不能赋初始值问题:
既然全局变量可以赋初值,很搞不懂为何局部变量就不行了?如果我要定义一个稍多的局部二维数组,
非得一个一个地去写,真累死人呀。
---》小问题3)相同的数组类型不能赋值:
比如:
var
arr1:array [0..10] of integer;
arr2:array [0..10] of integer;
begin
arr1:=arr2;
end;
就通不过, 要这样做才行:
type
tarr= array [0..10] of integer;
var
arr1:tarr;
arr2:tarr;
begin
arr1 := arr2;
end;
类型都是一样,为何就不能直接互相赋值呢?比如arr1 := arr2 ,非得用循环再赋一次,
或者,非得要定义另外一个类型才行,这不是脱裤子放P,多次一举吗??
=================================================================================================
---》这本来就是不同的类型。编译通不过,你能马上知道该把上面的写法改成:arr1,arr2:array [0..10] of integer;
很好的体现了严谨的代码书写习惯。
var
arr1:array [0..10] of integer;
arr2:array [0..10] of integer; 这样写代码,那才真是脱了裤子放屁呢。4)相同的指针类型不能赋值:
跟3)的数组一样,类型一模一样,也不能互相赋值,非得要另外定义,实在纳闷呀。
---》跟3)一样 5)我们都知道C的指针可以用数组的形式来访问,但DELPHI,就是不行,为什么不改进这点,很难吗?
---》明明是指针,为什么非要用数组来访问?本就不该乱七八糟瞎用。要用也行,你就得写复杂点,这是代价。
不然你就养成坏习惯了。
6)^char 和pchar
既然用write 语句可以输出pchar 类型的字符串,为什么不能输出^char的字符串呢??
感觉BORLAND对指针问题上,有些混乱.其实我觉得根本不需要引进PCHAR,PINTEGER等类型,
直接改进^char ,^integer ,^float等类型就可以。引进P字头系列后,感觉指针的用法有些迷惑。
---》没引进什么PCHAR PINTEGER,你可以看看他们的的定义,就是^char,不过使用type定义的
所以和^char不是同一类型。随便作个强制转换就等同了。7)多级指针问题:
在C中,可以定义方便地定义多级指针
比如 int **p; 而DELPHI却要
type
tpint2 = ^tpint;
tpint = ^integer;
var
p:tpint2; 为什么不能直接写成:
type
tpint2 = ^^integer; 或者
p:^^integer呢? 定义那么多类型多,使程序句繁琐多了。并且更严重的是,很多标准库,只能用规定的类型,
用定义的就是不行,即使看上去一样的类型,也不行。
比如strcopy函数等,你就得用pchar ,用^char就拉倒,还得转换成PCHAR,真太乱了.
而在C里面却那么的一致。 取地址也是一样,我用了@@P等形式存取多级指针地址,就是不行,但用p^^等形式存取数据好象又可以。
奇怪呀.
总之,感觉DELPHI的指针运算有些乱。不象C那样的一致性。 ---》一致?搞笑了吧。
#define PChar char *
#define MYCharP char *
#define XXCHAR char *
...
突然某个地方冒出个XXXYYYCHAR,不看头文件中的define,谁知道它就是char *,超乱。8)多目运算符 希望DELPHI 能引进 += ,-= ,/= ,*=等简写形式。
现在FREE PASCAL都可以实现这些功能,非常方便。 --->没感觉就特别方面了多少9)文件SEEK;
我记得C好象可以用文件头向文件尾移动,也可以从文件尾向文件头移动,非常灵活,
而DELPHI只能从头向尾移动,如果在大型文件处理中,效率就可要打折扣了 ---》你先搞搞清楚再说这句话。“而DELPHI只能从头向尾移动”???????10) UNICODE 问题。
一直搞不懂,BORLAND对这个问题没进展,但这个问题又是那么地重要。
---》没错,这是个问题。11)强烈要求开发其它平台的编译器
---》别强求,似乎没有在Linux下使用的VC吧。C不是近一家公司在做它的编译器。以上是我目前最希望BORLAND 能改善的问题,不知道还有哪些其它问题?各位说说??
最起码不象.net,要是真正跨平台那才牛比
不过Delphi是严格的结构化语言,对类型匹配那些要求严格的
PASCAL是强类型语言,不同C。两种都是优秀的语言。
不支持Unicode,但她支持widestring啊,有人用她做出了支持Unicode的VCL控件。