我是个Delphi fans,自从试了一下Delphi8,第二天就删掉了,bug太多,没法用,只好不太情愿地使用着C#,Delphi2005出来了,就又装了一个试用版用了一下,感觉不错,有点欣喜若狂,就准备使用起来,但是随着程序规模的不断扩大,越来越多地发现了至少是令人不爽的地方:
1、占用内存太多,一般来讲写一会程序就要用掉400M,更可怕的是每调试一次,内存就会增加好多,调试完了还不给我释放
2、不稳定,尤其是在界面设计上,经常把我关联的事件从控件上删掉,要么就是莫名其妙的一些错误提示,当然这些提示都是在设计器中的,还不会影响正常的Delphi使用,但是经常刚刚还好的界面我从代码切换到IDE设计机器上,就什么也显示不出来了。
3、内部不一致,能编译通过的,但是且在没错的地方用红色波浪线提示语法错误
明明支持
var
a:array of integer;
a := new(array[5]of integer);
编译没问题,却要给我在线错误提示,让我不爽
a明明是一个数组,我要是写a.length 他就编译不通过,非要写成&Array(a).Length才行
4、对namespace的支持莫名其秒,非要搞个复杂的命名规则,在unit名称上做文章,虽然这样可以获得最大的对传统win32 pas的语法支持,但是感觉这种方式给.net开带来很多不便,结果到了uses地方还要引用全名,而不是名称空间名,还要时时提醒自己用到的是别的.net开发的dll还是delphi开发的dll,对同一种东西非要搞出两套标准,真是让我恼火
5、debug太差
对比Delphi7简直是倒退
在win32下,可以调试程序中的变量,到了.net 那个watch窗口就成了摆设,根本没用
只能看看local var窗口中的东西,然后再一层一层地找下去
6、更要命的是如果用Delphi编译了一个dll,你到C#想怎么用怎么用,你到了Delphi里,不行,你还得同时提供*.dcpil文件,否则不让你用,真是没话说了
真是强忍着把那个大程序搞完,虽然用户用起来还行,但是这期间的开发过程真是要命阿。
还好现在出了个Chrom,对他的各个方面还算比较满意的,但是发现好像有个bug
如果这样定义
TA = class
protected
fa:integer;
end;
TB = class(TA)
public
function BBB:TA;
end;
function TB.BBB:TA;
var
rr:TB;
begin
rr := new TB;
rr.fa : =1;
result :=rr;
end;
就是编译不通过,感觉chrom对protected处理有点小问题
最后只能感叹,不用C#活得真累