我是個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#活得真累