1.引言
我們經常會問這樣的問題“:到底什麼使得Delphi如此優秀?”和“為什麼和別的編程工具相比,我更願意選擇Delphi?”等等。簡而言之就是:高效性。決定一個軟件開發工具效率的因素歸結為以下五點:①可視化開發環境的性能。②編譯器的速度和已編譯代碼的效率。③編程語言的功能及其復雜性。④數據庫結構的靈活性和可擴展性。⑤框架對設計和使用模式的擴充。
2.Del phi的特點
2.1可視化集成開發環境
可視化開發環境通常分為三個組成部分:編輯器、調試器和窗體設計器。和大多數現代RAD(快速應用開發)工具一樣,這三部分是協同工作的。當你在窗體設計器中工作時,Delphi在後台自動為你正在窗體中操縱的控件生成代碼。你還可以自己在編輯器中加入代碼來定義應用程序的行為,同時還可以在同一個編輯器中通過設置斷點和監控點等來調試程序。
在版本5裡,Delphi的調試器具備了許多先進的功能,如遠程調試、過程關聯、DL斷口包調試、自動本地監控以及CPU窗口等。Delphi還支持在調試時隨意放置和停靠窗口並把這一狀態保存為命令的桌面設置。由此,Delphi的IDE實現了對調試功能的良好支持。對RAD工具(如Delphi、Visual Basic、C++Builder和PowerBuilder等)來說,窗體設計器是一項獨特的功能。一些更為經典的開發環境,如VC++和BC++,都提供了對話編輯器,但卻沒有將窗體設計器集成到開發流程中,沒有窗體設計器將會降低開發工具的整體效率。幾年來,Delphi與Visual Basic在完善窗體設計器的功能方面展開了激烈的競爭。Delphi的窗體設計器的與眾不同之處在於,Delphi是建立在一個真正面向對象的框架結構基礎之上的。這樣,你對基類所做的改變都將會傳遞給所有的派生類。這裡涉及的一項關鍵技術就是VFI(visual form inheritance),即可視化窗體繼承。VFI技術使你能夠動態地繼承當前項目或對象庫中的任何其他窗體。一旦基窗體發生改變,派生的窗體會立即予以更新。
2.2編譯器的速度和已編譯代碼的效率
Pascal編譯器最著名的特點就是速度快,而Delphi正是建立在這種編譯器的基礎之上的。事實上,它可能是針對windows的最快的高級語言本地代碼編譯器。以往速度很慢的C++編譯器在近年來取得了很大的進步,增加了鏈接和各種緩存策略,尤其是在VISua1C++和C++Builder中。但即便如此,C++的編譯器還是比Delphi的慢了幾倍。Delphi和C++Builder共享同一種編譯器後端,是一個公司的產品,因此生成的代碼等效於由一個優秀的C++編譯器生成的代碼。
2.3編程語言的功能及其復雜性
C++是非強類型語言,有些錯誤編譯器無法發現。Object Pascal和Java很相似,它們很好地把握住了復雜性和功能性的平衡。它們都采取了這樣一種途徑,即限制其可用功能以加強開發者的邏輯設計。例如,兩者都避免了完全面向對象但卻容易被濫用的多重繼承的觀念,而是實現了一個執行多重接口功能的類。兩者都不支持美觀卻危險的操作符加載。兩者都有一些強大的功能,諸如異常處理、運行期類型信息(RTT工)和生存期內存自管理字符串。特別是運行期類型信息(RTTI),對我們設計仿真培訓系統中的操作站與現場站很重要,用它我們可根據組態數據庫的數據在運行期自動創建組件和自動識別組件而賦給相應的數據。同時,Delphi使用編程語言是Object Pascal,是面對對象、強類型語言。有利編制穩健的應用程序,減少調試、檢錯時間以提高開發效率;有利描述真實世界的事物和系統,如控制系統、工藝數學模型。
2.4數據庫結構的靈活性和可擴展性
由於Borland缺少一種數據庫計劃,因此Delphi保留了我們認為是所有工具中最靈活的數據庫結構。對大多數基於本地、客戶服務器和ODBC數據庫平台的應用程序來說,BDE的功能都非常強大。如果你對此不滿意,可以避開使用BDE以支持新的本地ADO組件。如果你沒有裝ADO,可以自己創建數據訪問類或者購買第三方數據訪問解決方案。此外,MIDAS使對數據源的多層訪問更易於實現。而Microsoft的工具(ODBC、OLEDB或者其他)從邏輯上來說趨向於支持Mi-crosoft自己的數據庫和數據訪問解決方案。
2.5框架對設計和使用模式的擴充
這是一項經常被其他軟件設計工具忽略了的重要功能。VCL是Delphi最重要的組成部分。在設計時操縱組件、創建組件、使用面向對象技術繼承其他組件的行為,這些能力都是決定Delphi效率的關鍵因素。在許多場合,編寫VCL組件都采用固定的00設計方法。相比之下,其它基於組件的框架經常過於死板或過於復雜。比如ActiveX控件具有和VCL控件相同的設計期性能,但卻不能被繼承以創建一個具有其他不同行為的新類。傳統的類框架,如OWL和MFC,需要你有大量的內部結構知識,而且如果沒有RAD工具的設計期支持,其功能將會受到抑制。
3.Del phi的事件驅動機制
3.1無約定編程
與傳統的Windows消息機制相比,Delphi的事件處理機制的最大優勢在於所有的事件都是無約定的。對程序員而言,無約定就是指可以在事件處理程序中什麼都不干。而在傳統的Windows消息機制中,就不得不調用基類的消息處理程序,還要把信息回傳給Windows。當然,Delphi的事件處理機制的無約定的編程方式可能無法對消息進行直接的靈活有效的處理,你要受制於誰引發了這一事件以及應用程序對這一事件要做出什麼響應等。例如,可以在OnKeyPress處理程序中修改和取消擊鍵,但onResize事件處理程序卻只能提供這一事件已發生的通知而無法進一步防止或控制尺寸的改變。
不過,Delphi仍然允許在事件處理程序中直接處理Windows消息。只是這就不像事件處理機制那麼簡單,因為消息處理需要程序員對要處理的消息有詳細了解。可以通過message這個關鍵字處理所有Windows消息。使用Delphi開發應用程序的好處是,你既可以用高級的、易於理解的方式來編程,也可以在需要時直接訪問低層的信息。
3.2 Delphi的VCL消息系統
所有的Delphi類有一個處理消息的內置機理,稱之為消息處理方法或者Message handlers。Message handlers的基本思想就是:類獲取一些種類的消息,然後再分發(dis-patch)它們,由響應的處理函數或者過程進行處理(調用哪一個處理函數或過程取決於所接受的消息)。對於一個特殊的消息,如果沒有一個指定的方法存在的話,則由一個缺省的消息處理。
VCL定義了消息分發系統,該系統將所有的windows消息(包括用戶定義的消息)傳遞給相應的對象,由各對象的消息分發系統進行處理。VCL對象用於接收消息的方法叫做MainWndProc()。通過MainWndProc()可以對消息進行任何特殊的處理。不過,一般情況下很少直接調用MainWndProc()來處理消息,除非不想讓消息通過VCL的消息系統分發。從MainWndProc()返回後,消息被傳遞給對象的WndProc()方法,這就是該對象的窗體過程,然後進入VCL的分發機構。分發機構使用Dispatch()方法把消息分發給一個消息句柄。消息到達該消息的處理句柄(Handler)後,經過該句柄的處理,這個消息處理過程就結束了。沒有必要改變這個消息分發機理,所要做的只是產生一個消息處理方法或者句柄,即一個消息處理函數。
3.3加速原型化
當對Delphi使用了一段時間後,即使你只是一個Delphi新手,你也會發現,用Delphi編寫第一個項目就能馬上獲益:開發周期短、應用程序穩健。設計用戶界面(UI)是許多windows程序員頭疼的問題,而這恰好是Delphi的長處。用戶界面的設計和程序的布局被稱為原型化。在非可視化的開發環境中,應用程序的原型化經常比真正實現程序的時間還要長。一個簡潔直觀、令人愉悅的用戶界面是應用程序的一大部分。
Delphi能夠用它的自定義控件或自己開發的控件來快速建立您需要的用戶界面。當你能熟練運用窗口、控件和事件響應方法以後,將發現過去要花很大精力的原型化工作現在大大簡化了。同時,用Delphi開發的用戶界面絲毫不比用傳統的開發工具建立的用戶界面遜色。在Delphi中你在設計期看到的往往就是最終的產品。
4.結束語
綜上所述,大家可發現Delphi 5本身就是一個功能十分強大的面向對象開發平台,它的可視組件庫VCL(VisualComponent Library)是一個易學、易用、高效的可重用的軟件對象,還包含有豐富的數據庫應用,通訊組件。Delphi自身就是使用VCL編寫而成的;不僅界面開發方便迅速,而且對於系統所帶組件和自編組件的運用就如同組態一樣。只要將組件放置在窗體中,用鼠標移動到你要求的位置,改變某些屬性以滿足你的要求。