delphi 各版本的特性
delphi 各新版本特性收集
?
Delphi XE6新增了一些特性并增強了原有的功能,主要有以下幾個方面: IDE(整合開發環境) Internet XML(擴展標記語言) Compiler(編譯器) COM/Active X Database support(數據庫支持) CORBA Actions(動作) Custom Variants(可定義的可變類型) VCL 單元和特性 RTL單元和特性 Cross-platform development(跨平臺開發) Translation tools(翻譯工具) Deployment changes(發布機制) Help system extensibility(擴展的幫助系統) 注意:某些特性不是所有Delphi版本都有。 VCL單元及特性 新的VCL單元以及新的特性(所有版本) 新增組件: TLabeledEdit? TLabeledEdit是ExtCtrls.pas單元中新增加的,它演示了如何使用子組件。TLabeledEdit是一個帶有標簽的編輯控件。標簽(Label)是這個控件的屬性之一。 TValueListEditor? ValueListEditor 是一個自定義的柵格組件,它使用TStrings保存鍵/值配對。它的工作方式類似于對象檢視器(Object Inspector)。 TComboBoxEx? TComboBoxEx是一個新的組合框控件,它允許在列表文字的旁邊出現圖片。 TColorBox TcolorBox是一個新的組合框組件,用來選擇各種顏色。 改進的特性包括: 大多數窗口控件(WindowControl)都發布了以下Bevel相關屬性: BevelEdges? BevelInner? BevelOuter? BevelKind? BevelWidth 子組件(Subcomponents) 現在,組件可以擁有創建子組件的其他組件。舉例來說,一個組件可以有一個組件引用的屬性,這個被引用的組件,可以是內部的(也就是一個子組 件),也可以是外部的(普通的組件引用)。如果引用的是內部的組件,則這個子組件的不被Form所擁有,而是被放置在Form上的組件所擁有。這意味著組 件可以將其內部的子組件發布出來,并且能夠被正確的流化。并且,對象檢視器已經被修改為支持查看組件內部的子組件屬性(比如Font屬性)。要創建一個有 子組件的組件,需要調用TComponent.SetSubComponent方法。 可發布的接口屬性(Publishable interface properties) 接口屬性(該屬性的類型是一個接口)現在已經可以被發布,當且僅當這個接口的實現的類是一個可以流化的組件。 這意味著現在你可以在對象檢視器中看到接口類型的屬性,并且將會出現一個支持此接口的組件列表以供選擇。 新增單元及變動 CheckLst.pas TcheckListBox增加了幾個新的屬性,包括AutoComplete,HeaderColor以及HeaderBackGroundColor。 Classes.pas TList有一個新的Assign方法,不僅完成拷貝功能,也支持一些簡單的集合操作。 TCollection新增兩個受保護的方法,用來允許派生的類對于增加和刪除條目的操作作進一步的處理。這兩個新方法是Added和 Deleting,兩者都沒有缺省的實現。為了保持TCollection的精簡,沒有增加OnAdded和OnDeleting事件。然而,在派生類中 卻很容易實現這些。此外,TCollection新增一個Owner屬性以便對擁有者進行標識。 TStringList新增屬性CaseSensitive(大小寫敏感),允許你控制子串列表的各項操作(排序,匹配)是否大小寫敏感。 TDataModule從Forms單元移到現在這個單元中(Classes.Pas),去處了對可視化控件的依賴。這使得你可以在不包含用戶界面的情況下寫出更小的服務段應用。 Thread新增FatalException屬性,以標識任何導致線程正常運行的異常。 TStream重載了Seek(搜索)函數,允許Int64類型的值來標識位置。派生的類可以覆蓋其中一個重載,但不能覆蓋所有。 TinterfacedPersistent是一個新的持久對象的基類,不是組件,但是可以實現接口。 ComCtrls.pas TtreeView的CreateTreeNodes方法是新增加的。 簡單的節點的創建,并且增加了一個事件,使得Tree的使用這不必為了要覆蓋節點的類而去重新創建一個派生類。并且AddNode也作了修改,讓你可以將你想要加入的節點(任何類型)傳遞給它。 增加一個OnAddition事件,該事件在節點被增加時觸發。 TreeView的排序Api作了增強(功能上)和簡化(使用上)。現在你可以對子樹進行遞歸排序,對頂層節點進行非遞歸的排序。 TCustomTreeView和TTreeNode類現在對AlphaSort和CustomSort提供了一致的定義,并且這些方法同時被增加到 TTreeNodes中。所有的改動都是后臺的,與前一版本保持兼容。 增加MultiSelect(多選)相關四個屬性以及八個方法。 TListView新增了CreateListItems方法,該方法與TTreeView的CreateTreeNodes類似。 TStatusBar-可調整大小的夾子現在可以顯示,即使狀態欄的父親不直接是Form。只要狀態條的右下角處于Form的右下角位置,則該夾子顯示。 TDateTimePicker新增Format屬性,用于控制日期值的顯示方式。 THeaderControl新增許多新的屬性和事件以支持列的拖放。一個新屬性HotTrack允許當用戶的鼠標在頂部區域上停留時,該區域以高亮顯示。 TToolBar新增Menu屬性,可以自動在工具條上添加與Menu的菜單項對應的許多按鈕。當用戶使用定制對話框來定制工具條時,會有一系列的事件觸發。 Contnrs.pas Last(最后)和First(最先)兩個函數(屬性)被增加到TObjectList,TComponentList以及TClassList中。這些函數的返回值依類的不同而不同。 TStack(棧),TQueue(隊列),TObjectStack(對象棧)以及TObjectQueue(對象隊列)的Push現在改為 一個函數,簡單的返回被推入到棧(或者隊列)中的對象。就像推入,然后查看一樣。當要推入在推入時剛創建的對象時,這一點非常有用(譯者注:其實這一 點,Borland應該早就考慮到才是!)。 TBucketList和TObjectBucketList是簡單的哈希表。 Controls.pas TCustomListControl是一個新的公用基類,用于表達一組條目的列表控件(比如組合框,列表框和列表視圖等)。它引入了一些新的方法用于操縱將要被子孫類繼承的列表。 TDragObjectEx,TDragControlObjectEx以及TDragDockObjectEx是三個新的拖拽對象,拖拽操作 結束后,它們可以自動釋放。他們對應于TDragObject,TDragControlObject和TDragDockObject,區別在于老的版 本不能夠在拖放操作完成時自動釋放。 TControl新增兩個方法:ClientToParent和ParentToClient,用來在父親與子女之間換算坐標。工作方式與ClientToScreen和ScreenToClient類似。 TWinControl新增一個重載的方法PaintTo,參數改為Canvas(畫布)而非HDC(設備描述表句柄)。 TModalResult被移至Forms.pas中。此外,增加以下幾個支持函數: function IsPositiveResult(const AModalResult: TModalResult): Boolean; function IsNegativeResult(const AModalResult: TModalResult): Boolean; function IsAbortResult(const AModalResult: TModalResult): Boolean; function IsAnAllResult(const AModalResult: TModalResult): Boolean; function StripAllFromResult(const AModalResult: TModalResult): TModalResult; DbCtrls.pas TDBLookupListBox和TDBLookupComboBox新增NullValueKey屬性,允許用戶使用空值(Null)賦值。 TDBComboBox新增AutoComplete(自動完成)和AutoDropDown(自動下拉)屬性。 TDBListBox也新增AutoCompelete屬性。 TOpenDialog新增OptionsEx屬性(譯者注:該屬性用來設置是否出現win2000特有的位置工具條),同樣,保存對話框也新增此屬性。 ExtCtrls.pas TImage-Proportional(比例)屬性被增加,用于控制圖像的高寬比而不論圖像控件的尺寸如何。 Forms.pas TApplication(以及TApplicationEvents)新增OnSettingChange事件,用來通知系統設置的改變。 TForm新增AlphaBlend,AlphaBlendValue,TransparentColor以及TransparentColorValue等屬性以支持分層的Form。 TScreen提供了獲取桌面工作區大小的一系列屬性 (WorkAreaRect,WorkAreaTop,WorkAreaLeft,WorkAreaHeight,WorkAreaWidth)。另外, 還有一系列的新方法允許你定位哪個監視器更加與點,矩形,或者窗口相匹配。 TMonitor擴展了多監視器的支持,提供了當前的主監視器,WorkareaRect以及BoundsRect等屬性。 新增AutoDragDocking(自動停靠)支持。這一特性允許你關閉應用程序的自動停靠功能。另外,在Delphi的選項設置對話框中允許你修改這么一個標志。 TModalResult聲明被移到Control.pas單元中。 Graphics.pas 新增TFontRecall, TPenRecall 和 TBrushRecall三個新類,允許你快速存取font(字體),pen(畫筆)和brush(刷子)。他們均從TRecall(在Classes單 元中聲明)派生而來,TRecall需要與TPersistent一起使用。 系統顏色經過排序便于查找。 在原先16種顏色的基礎上新增4個: clMoneyGreen? clSkyBlue? clCream? clMedGray? ImgList.pas Draw,DrawOverlay和GetIcon方法均被加上Overload(重載)標記,便于你覆蓋圖像列表的屬性設置。 IniFiles.pas Ini文件開始支持使用流讀寫二進制數據。 TMemIniFile支持控制子串是否大小寫敏感。 THashedStringList是一個新的TStrings的派生類,使用內部的哈希(雜湊)表提高訪問速度。 Masks.pas EditMask(掩碼編輯框)和文本使用自定義類型因此他們的屬性編輯器更加有用。 Menus.pas TMenuItem增加一個AutoCheck(自動標記)屬性,用來標記當用戶點及菜單條目時,是否自動在已經標記和未標記之間切換。 Registry.pas TRegistry開始支持使用流讀寫二進制數據。 StdCtrls.pas OnCloseUp和OnSelect事件被增加到TCustomComboBox中(TComboBox也一樣)。OnCloseUp事件在 組何況的下拉列表關閉時觸發(與OnDropDown觸發的時機相反)。OnSelect在列表的東西被選中時觸發(或者當上下滾動可選值時使得組合框的 內容被改變時)。組合框新增AutoCompelete屬性,缺省為True。 TListBox新增對兩個風格的屬性:lbVirtual和lbVirtualOwnerDraw。兩個風格用于支持虛的列表框,即不保存任 何條目。通過設置Count屬性可以指定條目的個數,然后在OnData,OnDataFind,和OnDataObject事件中提供條目(以及相關的 對象)。 TypInfo.pas 現在調用對象的GetPropInfo方法是安全的了。假如對象沒有任何RTTI信息,則簡單的返回nil。 增加FreeAndNilProperties。它將釋放(free)并且置空(nil)支持RTTI的對象的所有對象屬性。注意它將對所有的對象,包括引用的對象進行此項操作,所以最好先將被引用的對象釋放,置空。Delphi XE5中的新增內容
Delphi XE5是所有Delphi開發人員的必須備升級,并且是來自Embarcadero的獲獎的、多設備應用開發解決方案的最新版本。使用Delphi XE5的新特性,以交付應用Android、 iOS、Windows 和OS X。以PC機、平板電腦和智能手機為目標,更輕松地與更多數據連接 - 等等!
Delphi XE5中的新特性
… 等等!
* 已支持 Android 設備的列表
| Delphi XE4 |
|
| Delphi XE3 |
|
| Delphi XE2 |
|
| Delphi XE |
|
RAD Studio 2010
【CSDN8月20日消息】根據國外媒體報道,Embarcadero Technologies公司宣布推出RAD Studio 2010。開發者可以利用它提供的便捷的觸摸屏開發框架來創建基于觸摸GUI界面的程序,包括平板電腦、觸摸板和kiosk程序。
該版本提供了如下的新特性和功能:
創建手勢識別和觸摸控制的程序。
內置了超過30種的手勢設定,包括上、下、左、右以及像平移、縮放和旋轉。
可以通過VCL Gesture Designer在組件級對手勢進行可視化設定和添加。
可以在輸入屏幕上建立虛擬觸摸板和多語言鍵盤。
可以在只對代碼進行很小的情況下就能將Delphi和C++ Builder程序升級為支持觸摸和手勢識別功能。
RAD Studio 2010對于觸摸程序開發的支持獨具特色,因為它可以和多種版本的Windows無縫接合,包括Windows 2000、XP、Vista和Windows 7,而且支持多種輸入設備,包括單點和多點觸屏幕、觸摸筆和鼠標。
觸摸操作現在已經變成了現實,而且可以向用戶提供更豐富的交互體驗。從kiosks和POS機到iPhone和 Windows 7,手勢識別功能已經成為使程序更具競爭力的關鍵特性,因為消費者和商家都認識到了自然輸入的便利性。,Embarcadaro公司的Michael Swindell說,隨著Delphi和C++ Builder 2010的發布,Embarcadero也將提供一套簡單的解決方案,可以向多種Windows平臺的程序中加入觸摸和手勢識別功能。
RAD Studio 2010的其他特性還包括:
支持Firebird。Delphi對其提供了本地支持。Embaracaro聲稱Firebird是全球應用最廣的開源數據庫。
新的DataSnap。DataSnap服務器已經擴展到了幾乎所有的架構RIA、JEE、RESTful、AIR等等。
支持Windows 7。RAD Studio預計對Windows 7的API提供支持,開發者可以利用其Natural Input庫Direct2D圖形庫。
對IDE環境進行了超過120項改進,提升了開發者的使用體驗,提高了工作效率。
小資料:Kiosks,Kiosk ModeKiosk Software廣泛用于公共電腦或者嵌入系統(如可以上網的公共電話、ATM、機場自助服務系統、網吧管理軟件等),這些程序一般都運行于普通的操作系 統,但為了安全以及防止使用者使用其他的程序,Kiosk一般都會全屏運行并鎖住系統的其他程序。雖然IE的Kiosk模式沒有鎖住其他程序,你仍可以用 Alt+Tab來切換,但通常運行Kiosk程序的地方都不會提供鍵盤給你,最多只是一個僅供最低需求的虛擬鍵盤而已。(譯/曹巳甲)
Delphi2010新發現-類的構造和析構函數功能
Delphi2010發布了.
雖然憑著對Delphi的熱愛第一時間就安裝了,但是現在可能是年紀大了,對新事物缺乏興趣了.一直都沒有仔細研究.
今天有點時間試了一下新功能.
本來C#和Delphi.NET是支持類的構造函數/析構函數的(注意不是實例的構造和析構).也就是在模塊初始化/卸載的時候會調用.
這樣有很多好處,比如說類的靜態變量的初始化什么的都可以在這里做.
Delphi For Win32對這方面的需求還不是很大.
第一個原因.歷史上舊版Delphi不支持靜態變量.只能用Unit的全局變量+類函數來模擬.所以類的構造析構基本沒需求.從Delphhi2005還是2006開始才支持Class var的.記得不太清楚了
第二個原因.Delphi的Unit有初始化節和反初始化節(initialization/finalization).很多初始化工作都可以在這里面做.比如說類的靜態變量.所以對類的構造函數需求不是很大.
隨手試了一下Delphi2010.驚喜的發現不知道什么時候Delphi2010已經開始支持類的構造和析構函數了.易博龍和CodeGear居然在介紹Delphi2010的新變化的同時都沒有介紹這個特征.
貼一段代碼:
typeTTest = classprivateclass var StaticABC : Integer; //類變量(類似C++的靜態變量.但不完全等同) var FABC : Integer; //普通成員變量 public class constructor Create();//類的構造函數 class destructor Destroy; //類的析構函數 constructor Create(); //實例的構造函數 destructor Destroy; override; //實例的析構函數 end; { TTest } class constructor TTest.Create; begin StaticABC := 1234; end; class destructor TTest.Destroy; begin end; constructor TTest.Create; begin FABC := StaticABC; end; destructor TTest.Destroy; begin inherited Destroy; end;呵呵.很有意思.雖然以前用Unit的initialization/finalization可以實現.但是如果有了類的構造和析構語法的話代碼的可讀性會更好.
同時還發現結構體(Record)也可以用一樣的語法.可編譯通過,但是實際上卻沒有效果.估計以后會加上這個功能吧
?
轉載的delphi2010新功能
1、Object Inspector 中的 Boolean 屬性顯示了 Checkbox
這個改進比較明顯,看下圖就明白了,直接點擊 Checkbox 即可改變 Boolean 的值;
2、可以用 Tab 鍵和 Shift+Tab 縮進代碼了
這個沒法用圖來說明,只能自己體會了,個人覺得,Delphi 1.0 就應該這么做
3、可維護最近打開的 Projects 和 Files 列表
在菜單 File-Reopen-Propeties 中,可設置最近打開 Projects 和 Files 的顯示數量,并可刪除、清空,如下圖:
4、代碼編輯器的搜索功能增強
看下圖,效果和 Firefox 的搜索功能幾乎一致,搜索框移到了下方,同時高亮搜索詞:
5、代碼自動完成增強:Auto Invoke
剛才說“里程碑”,主要是指這個功能。
當前的 Delphi 編輯器只有在輸入“.”的時候,才會出現自動完成列表。在 Delphi 2010 中啟用 Auto Invoke 功能后,當你輸入任意一個字符的時候,都會出現匹配的自動完成列表,和 Visual Studio 差不多。
Auto Invoke 默認是禁用的,在 Tools - Options 中啟用:
下圖是輸入 Show 后出現的自動完成列表,當然,當你輸入第一個字母 S 的時候,自動完成列表已經開始匹配顯示了:
在 Visual Studio 中,當輸入完賦值運算符后,可自動判斷類型并顯示枚舉類型的值列表,當前的 Delphi 2010 還做不到這一點,不過當輸入字符后,也是會按類型匹配的。看下圖,會顯示 Align 屬性的可選值:
當前的 Auto Invoke 用的時候真的是很爽,不過有的時候還是有些問題,會不合時宜地出現,而且自動完成列表有時會匹配錯誤,編程時有被“干擾”的感覺,期望以后的版本能將其改進得更為“智能”。
6.格式化代碼,Edit-source或ctrl+D,但格式效果不大好,可以設置一下
?
7.安裝包標識
第一個圖標表示已安裝
第二個表示未安裝
第三個表示非設計時包
?
8.拖動調試,這個比較有意思,斷點還可以回退。看下面的效果
第一次運行的時候,x的值=150
按住33行的向右箭頭不放,拖到32行放開,效果如下圖
再F8走一步,x的值就變成200了
?
?
?
?
更多的Delphi2010新特性,可以參考Delphi 2010 Handbook,非常值得看看。
目前還只有英文版的。
http://m8spy.persiangig.com/.ZqB2Ja51KF/Ebooks/Delphi%202010%20Handbook.pdf
此書配套源碼
http://cc.embarcadero.com/Download.aspx?id=27601
?
?
?
Delphi? 2009?新特性
- 增強的DataSnap組件
DataSnap是一組數據庫組件。在Delphi 2009中對其進行了重構。通過DataSnap在客戶端中可以如同調用本地函數般的調用遠程函數。 - 基礎語言特性的增強,增加泛型和匿名函數的支持
- VCL組件的增強,增加了Ribbin Controls(類似office 2008的界面控件)組件,PNG的支持,對現有組件的改進,繼續增強對Vista的支持。
- 增加國際化支持。提供了完整的Unicode支持,從IDE到RTL、VCL等整個構架體系已完全遷移到Unicode。同時提供一組本地化工具,方便將程序翻譯為各種語言。
- IDE增強,比如提供了新的Class Browser(類瀏覽器),強壯的構建配置,以及對資源管理器(resource management )的增強。
- COM和ActiveX開發便得更為友善。
Delphi 2009完全重構了對COM和ActiveX的支持。現在,COM和ActiveX的開發對開發者而言,已經變得完全透明,擁有完整代碼的解決方案(譯者注:這部分我沒看太懂:(,反正就是說更好用了)。 - 使用VCL組件實現AJAX的開發,想構建普通應用程序一樣構建WEB 2.0程序
讀幫助文檔發現Delphi2009的新特性,象C語言一樣用數組方式使用指針.
傳統的Pascal指針和數組不是等價概念.不能像數組一樣使用下標指針(編譯器特殊處理的PChar類型除外).
而C語言中數組就是數組第一個元素的地址.和指針在一定程度上等價.指針所指向的內容也可以象數組一樣用下標來訪問.
雖然問題不大但是寫起代碼來就麻煩,而且不直觀.
如下代碼以往的Delphi只能這樣寫.
constrw = 10;rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); var I : Integer; begin for I := 0 to dwCount - 1 do begin lpRect^ := Rect(I*rw, 0, I*rw+rw, rh); Inc(lpRect); end; end;或者非要用下標訪問的話就要變通一下.
constrw = 10;rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); type TRects = array[0..0]of TRect; pRects = ^TRects; var I : Integer; lpRects : pRects; begin lpRects := pRects(lpRect); for I := 0 to dwCount - 1 do begin lpRects[I] := Rect(I*rw, 0, I*rw+rw, rh); end; end;但是Delphi2009新增了編譯開關,允許象C語言一樣用下標直接訪問數組所指向的元素.
{$POINTERMATH ON} constrw = 10; rh = 10; procedure SetRects(lpRect: PRect; dwCount : Cardinal); var I : Integer; begin for I := 0 to dwCount - 1 do begin lpRect[I] := Rect(I*rw, 0, I*rw+rw, rh); end; end;呵呵方便多了.
不過要注意默認是{$POINTERMATH? OFF}的.
目前多數Delphi2009新特性的介紹
2008年09月16日 星期二 10:43
| 集中在Unicode,以及一些新的URL上,我試圖從一些不同的角度察看一下Delphi2009都有些什么東西. 首先我們看到了Tubron的增強,客觀的講,內部的改進確實還是挺大的,尤其是在CodeGear人手并不是很整齊的情況下,之前覺得遺憾的地方的意思就是說Delphi在外圍的變化并沒有跟上其內部的改進速度。 剛才上面有朋友說起VCL庫,其實我們還是不要輕易說 什么是“最好”,當然可以是最喜歡的,如果我們對比下JAVA,VCL的進步真的是太慢了,這很大程度上都是之前Borland公司自己的原因,這次對比 RTL中我發現codegear仍舊為今后在linux上的發展留出了空間,不少條件編譯指令都作了對應調整,我們有理由等待未來的Delphi for Linux,希望不要再出什么單獨的kylix版本了。
|
?
?
?
?
delphi2006語言新特性
內嵌類
內嵌類在類的內部聲明,它被大量的應用在.net framework以及面向對象的編程中,它表明一種概念性關聯關系,并且避免了命名沖突,它同樣支持delphi win32編譯。
定義內嵌類
它使用如下語句定義
當內嵌類定義遇到第一個非標識符時終止,例如:procedure, class, type和所有可見性范圍修飾符。內嵌類與容器類同樣適用正常的訪問、可見性規則。一個內嵌類能存取它的容器類實例的變量(如字段,屬性或者方法),但是 它必須要有一個參考對象。一個內嵌類能存取類靜態字段(class fields)類屬性(class properties)和類靜態方法(class static methods)且不用參考對象,但必須遵守delphi可見性規則。
內嵌類不增加容器類的大小,建立一個容器類實例時不會同時建立內嵌類的實例,內嵌類與容器類僅僅是定義的上下文關系。
定義和使用內嵌類
下面的例子演示如何去定義和存取內嵌類的字段和方法。
在實現內嵌類的innerProc方法時,你必須指定它的容器類的名字,例如:
procedure TOuterClass.TInnerClass.innerProc; begin... end;可以用 . 標志像存取一般的類成員一樣去存取嵌套類的成員。例如:
varx: TOuterClass;y: TOuterClass.TInnerClass;beginx := TOuterClass.Create;x.outerProc;...y := TOuterClass.TInnerClass.Create; y.innerProc; end;內嵌常數
常數也可以同樣在內嵌類型塊中聲明,常數塊的結束標志與內嵌類塊的結束標志一樣,關鍵字或 可見性修飾符。內嵌常數不支持類型常量,如 Borland.Delphi.System.Currency 或Borland.Delphi.System.TDateTime 。它只支持簡單類型,如:序數,枚舉,字符串,實數等類型。
下面的代碼演示聲明內嵌常量
delphi2006語言新特性-幫助類
幫助類(Class Helpers)
幫助類是聯合其它類的一種類型,它能為聯合類(包括它的派生類)增加方法 和過程。它為我們提供了一種不使用inheritance來擴展一個類的能力,你可以在任何地方使用幫助類,編譯器自動決定在什么時候使用原始類還是增加 的幫助類。(注意:幫助類只是一種擴展一個類的方法,但是應該僅僅在為實現某種新目的而開發新代碼時被使用,而不應該視為一個設計工具被使用。它是綁定語 言和平臺RTL的 )
定義一個幫助類的語法:
ancestor list是可選的
一個幫助類不可以定義實例數據,但允許有類字段(class fields)
可見性規則與memberList語法與一般的類一樣
一個簡單類可定義并聯合多個幫助類,然而,只有一個在源代碼中特殊位置的幫助類才能被應用。在最近的范圍被定義了的幫助類將應用。幫助類的范圍是由delphi風格決定的(在單元中uses子句,由右到左)
(呵呵,上面這段翻譯的好像不太準,暫且這樣吧,歡迎指正)
下面演示定義一個幫助類:
注意,幫助類的MyFunc函數被調用,因為它的優先于實際的類
?
?
?
?
delphi2005新特性
1, 簡介
Borland Delphi 2005 是目前delphi的最新版本, 提供了在Microsoft Windows的操作系統和Microsoft .NET 框架 1.1 版本下的快速開發環境, 同時可用Delphi語言(適應win32和.NET 1.1)與C#(只能適應>NET 1.1)開發
?
產品總覽
Delphi 2005 可以看成擁有三個不同的特性:一個使用Delphi語言(Delphi7的后繼版本)的Win32特性, 和兩個.NET特性:一個使用Delphi 作為開發語言(Delphi8的后繼版本), 另外一個使用C#作為開發語言. 關于這裹說到的最后一個特性, Delphi 2005 是從 Borland C#Builder 1.0 升級而來的.
?
結論就是, Delphi2005是作為Delphi3 到 8和C#Builder開發者的下一個版本, 它在Win32下的快速應用開發和在.NET框架下一樣優秀.
?
?關鍵特性
?
-?? 支持三個不同的特性: Delphi for Win32, Delphi for .NET 和 C# 都同處于一個開發環境(和調試環境)中.
-?? 可以比較容易的在同一個開發環境中移植 Win32 應用程序到.NET中
-?? 新增一些Delphi語言的新特性如 多單元命名空間, for…in…do循環, 內聯函數, 和其它的代碼優化技術.
-?? 支持WinForms, ASP.NET WEB Forms 在可視化環境中的開發, 就如Borland自己在.NET和Win32上的VCL框架上應用程序的開發一樣.
-?? 支持異質的數據訪問(可以使用所有的ADO.NET 數據適配器—不僅僅是BdpDataAdapter), 多層的數據應用開發可使用新的 DataSync, DataHub, RemoteServer和RemoteConnection 控件.
-?? 支持重構來重新組織你的源代碼, 以便提升代碼的可維護性和成功重用代碼的可能性.
-?? 支持DUnit和NUnit的單元測試, 可以在Delphi for Win32, Delphi for .NET 和 C#項目中使用極限單元測試框架來來提高你代碼的質量.
-?? 支持ECO II (Enterprise Core Objects II)- 一種UML相應的對象模型框架和對象持久性, 通過Borland 數據提供者支持多種數據庫, 并且現在也支持ASP.NET.
-?? 支持ASP.NET的DB Web 控件能使開發更簡單的設計, 開發和分發功能強勁的帶數據驅動的Web 應用程序.
-?? 支持版本控制和團隊開發, 通過額外的插件StarTeam, 能針對你的項目做特別的務份和提供一個歷史列表視圖,
-?? 通過janeva for Delphi for .NET和C# 應用程序的解決方案, 內置支持J2EE企業級EJB, 或者CORBA服務器.
?
2. Borland Delphi 2005
這個白皮書將能從不同的范圍分類來討論Borland Delphi 2005 一些重要的增強功能. 首先, 將會提及到IDE 方面的增強, 接著是重構, 使用DUnit和NUnit的單元測試, 在數據訪問和Web 方面的增強, ALM的支持, 最后談到Delphi編繹, 語言和調試器方面的增強.
?
2.1 IDE
??? Delphi 2005 的可視開發環境(IDE) 在下面提到的各方面都有了意義重大的擴展和增強.
?
歡迎界面
? 歡迎界面已經重新設計過了, 不僅顯示最近打開過的項目, 還顯示Borland 開發者網絡和RSS的最新新聞(需要到internet的聯接)
?
多樣化的特性
Delphi 2005 支持多樣化的特性, 體現在同時支持 Delphi fro Win32, Delphi for .NET,和C#項目. 這裹有個小小的有用提示, 一個個性化圖標會在IDE工具條上顯示當前選擇的類型(Delphi for Win32 對應 , Delphi for .NET對應, 而 C#對應 ).
?
項目管理器
Delphi 2005 帶的項目管理器現在能顯示整個項目的目錄結構(如果是ASP.NET項目, 甚至還提供了在當前項目目錄下創建和管理子目錄的功能), 這樣能更直觀的讓你知道文件的放置位置和決定那個文件是要分發給用戶的. 在一個項目組中, 我們能夠增加項目到不同的目標中(和特性中), 或者從一個項目移動到另外一個中—也就是將一個立即特性轉到另外一個中.
?
現在項目管理器和對象檢視器已經能夠配合使用, 只要你要項目管理器選擇一個文件, 對象檢視器就會顯示對應文件相關的信息, 如文件名, 文件的全路徑, 還會加上相關的屬性如文化,名字, 裝配器的版本號, 或者本地副本的選項,. 大部分顯示的屬性是只讀的(用灰色字體顯示), 當然, 部分是能夠改變的, 如文件名, 本地副本的狀態,. 項目管理器同時能感知 StarTeam, 并且在管理存儲在StarTeam中的項目時, 能根據輸入命令提供相關的上下文感知提示.
?
備份和歷史列表
Borland Delphi 2005 在你的項目目錄下提供一個隱藏的給你的源碼提供簡易的維護多級別務份和歷史列表的功能,. 這代替了舊的用 ~文件名的方式. 那個 __歷史列表目錄能夠包含項目的多個版本(默認是最后十個維護的版本), 并且能夠作為本地的文件版本控制倉庫.
?
歷史視圖被用來對你的項目文件當前版本的檢查和備份不同的版本, 而且還提供了一個非常有用的(智能的)比較不同版本間文件區別的視圖. 直觀的顯示你在源代碼中做的加入或移除或修改的動作. 除了能瀏覽代碼的改變之外, 你還能撤銷以前做的改變,回到你以前備份文件的時間點.
?
歷史視圖同時支持 StarTeam 給你的項目提供更加完全的團隊視圖歷史列表(參考ALM部分)
?
浮動的VCL設計器
?Borland Delphi 2005 現在提供了對自由浮動設計器的選擇, 就象以前的Delphi7和更前的版本(相對于固定設計器的Delphi8). 默認的情況是使用嵌入式的設計器, 但是你能在Delphi的提供的選項中找到對應的VCL設計器的那個對話框, 然后去除嵌入設計器的選項來取消嵌入效果.
?
Delphi 2005 工具選擇對話框
?? 這個功能不僅能讓你同時觀察你的Form設計情況和源代碼, 還讓你能夠在設計時同時觀察多個Form和數據模塊.
?
同步編輯
Borland Delphi 2005 提供一個新的同步編輯功能, 它允許你在一個選擇的代碼區域內修改多個出現的變量 (例如, 允許你同時對它們重命名). 注意這個功能比較有限的,只適應用小區域的源代碼修改中使用(如一個過程或方法中的代碼), 如果你想在一個大的代碼區修改標識符, 建議你還是使用重構, 它使用帶有語法和語義分析引擎.
?
Delphi 2005 同步編輯的效果
?
錯誤實時提示
Borland Delphi 2005 的IDE提供了一個新的功能叫錯誤實時提示(Error Insight), 可以在你輸入delphi, C#, HTML代碼的同時高亮顯示輸入的錯誤語法. 錯誤實時提示會在錯誤的語法下面顯示一個紅色的斜體提示, 該信息將包括關于對應錯誤的更多信息. 這個功能甚至能夠幫你在開始編繹項目之前就能修正源代碼中的語法錯誤. 此外, 對于未聲明的標識符各誤拼寫的關鍵詞和保留字, 錯誤實時提示還能誤別出該符號并沒有在當前范圍聲明(就好象在一個命名空間中的類型在被使用前, 必須用uses 或者using標識出來)
?
關聯查找
Borland Delphi 2005 IDE擁有一種增強的方法來查找關聯代碼, 它后臺是使用重構引擎, 可以通過查找結果來導航到你的源代碼. 你能查找本地(在一個單獨的源文件中)的符號引用(如字段, 方法, 屬性, 變量等), 或者你能在項目的所有源文件中查找和檢查所有相關引用,
?
????? 相關引用用一個樹狀列表列出, 每個節點直接對應的項目中的代碼. 如果你雙擊一個節點, 代碼編輯器將出現并顯示到對應的源代碼. 這是一種簡便快速的訪問源文件的方法.
?
?
Dlphi 2005 關聯查找樹狀列表查找結果
?
?關聯查找結果總是可以在菜單”views” 下找到, 樹狀列表甚至能在同時包含不同的查詢結果, 并且顯示上一次的查詢結果.
幫助實時提示
新的幫助實時提示針對標識符提供了類似類,屬性,方法或者事件在輸入時類似的行為.? 幫助實時提示在不同的狀況下會有兩種不同的顯示方法:或者用彈出氣泡的方式, 或者和彈出的代碼實時提示結合在一起顯示.
?? 當將鼠標移過一個標識符是時就會彈出一個氣泡式窗口的實時幫助提供. 它將會針對特定的標識符產生一個工具性的提示窗口來顯示相關的信息, 包括到在線幫助的相關鏈接.
?? 你還能得到一個和代碼實時提示合成的幫助實時提示窗口, 在裹面會根據代碼實時提示窗口中選中的節點對應的條目給出進一步的幫助提示. 在你選擇了一個屬性, 方法或者事件后, 又需要知道那一個才能滿足你想要的目的的時候, 顯得特別有用.
?
Delphi 2005 幫助實時提示配合代碼實時提示時
?
幫助實時提示一樣能對你自己定義的類和方法產生相關提示.
結構視圖
Delphi 2005 IDE左上角包含了一個結構視圖. 這個窗口在某些場合特別有用. 它能顯示代碼編繹器中源代碼的繼承結構. 同樣, 它也能顯示HTML設計器中包含的HTML控件, 就象VCL窗體設計器顯示可視化控件的繼續結構一樣. 對于源代碼結構, 結構視圖還能動態的在頂層出現一個”錯誤”節點顯示錯誤實時提示窗口中找到的所有語法錯誤.
?
Delphi 2005 結構視圖
?
當檢看可視控件的結構時, 你能雙擊結構視圖中對應的條目來定位到窗體設計器中對應的控件. 當你觀察相應HTML 源代碼的結構時, 你能雙擊相應的條目來轉到代碼編繹器中對應的聲明位置.
?
查找結果
現在當你執行一個查找時, 結果會根據文件名分組顯示在一個直觀的樹狀控件中. 你能直接通過文件瀏覽它們, 也能打開節點來觀察在相應文件中找到的每一個對應點.
?
工具面板
現在工具面板的定位機制已經得到增強, 你只要輸入控件的第一個字母就能立即得到一個只包含起始字母與你輸入相符的過濾后的類別列表. 并且會高亮顯示顯示你輸入的字母, 和能夠在你繼續輸入字母時進一步的過濾. 按”enter”鍵將會在設計器中的窗口放置上一個當前選擇的控件.
?
工具面板向導
?????? 除了顯示控件(在設計視圖)或者代碼摘要(當處于代碼編繹器中)之外, 工具面板現在還能在對象倉庫開始一個新項目時顯示一個向導, 并將對象倉庫中的類別轉成工具面板上的類別. 這個功能允許你能夠用快捷鍵輕易的在向導中創建新的文件, 項目, 對象.
?
2.2 重構
?? 重構是一種對存在的源代碼重新組織結構的過程, 在沒有修改代碼的行為和輸出的前提下, 使代碼更容易被重用和維護.
?
????? Borland Delphi 2005 帶的重構支持包括許多用用的特性, 有”提取方法”到聲明新的變量或字段, 到提取成資源字符串, 再到重命名標識符和復位義命名空間和uses 子句.
?
Delphi 2005 重構菜單
?
重命名標識符[Delphi/C#]
?
While the Sync Edit feature allows you to lexically rename identifiers in a selected section of source code, for larger sections of source code Delphi 2005 refactoring offers the option to rename symbols (like fields, methods, properties, variables, etc.) using Refactor - Rename. The refactoring dialog will even allow you to view all references before refactoring (so you can verify all places where the rename will be made).
??? 雖然代碼同步編號器可以讓你在選擇的源代碼區域中重命名標識符, 對于范圍更大的源代碼, Delphi 2005的重構提供了rename這個功能來修改標識符(如字段, 方法, 屬性, 變量等).重構對話框甚至還可以讓你在重構之前先瀏覽所有涉及到的引用(這樣,你能驗證所有被修改到的地方).
This feature adds real refactoring intelligence to the standard search and replace functionality, by not just renaming any symbol within the current scope, but only those that are indeed the same as the selected symbol .For example, if you have both a method X and a local variable X, and you want to rename only the method X, Refactor - Rename ensures the local variable X will be left alone, as it recognizes it’s not the same as the method X).
?? 這個智能重構的特性被融合到查找,替換功能中, 但它不僅用在修改當前范圍的所有標識符, 還能只修改與選擇的標識符真正相關聯的代碼. 例如, 如果你同時有一個方法名為X和一個局部變量X, 當你只是想修改方法X的名字時, 重構中的重命名功能會確保忽略對局部變量X的修改, 因為它能區分變量X和方法X并不相同.
?
變量聲明 [Delphi]
??? 當在寫代碼的時候, 偶爾會還沒有聲明一個變量就先使用了. Delphi 2005 的重構允許你使用重構中的Declare Variabl來自動聲明這類變量, 它會顯示一個對話框來讓你指定變量對應類型, 然后增加這個變量的聲明到當前區域.
??? 這個選項只在當前變量還沒有聲明時才可用, 當然應變是這樣, 這樣的好處是, 它還允許你將精力集中在代碼和算法邏輯中, 而不用移動到代碼的首端來增加一個變量的聲明. 變量聲明和錯誤實時提示配合得很好, 當在錯誤實時中出現一個高亮顯示的未聲明變量提示時, 只要簡單的右擊這個變量來聲明就可.
?
字段聲明[Delphi]
???? 和聲明未聲明的變量類似, Delphi 2005 重構提供了重構--Declare Field來允許你你給一個類聲明字段. 如果在同范圍內要聲明的字段和已經存在的字段名有沖突, 重構將會出現一個對話框來讓你解決沖突.
???? 這個功能將會在給類擴展增加功能時節省很多時間, 不會再強迫你轉到類的聲明部分, 然后手工給字段定義.
?
抽出方法[Delphi]
??? Delphi 2005 重構功能允許你選擇源代碼的一部分(可能這部分在幾個不同的地方重復出現, 或者其它地方需要相同的功能), 并將這部分代碼抽出來轉為一個方法, 這個重構生成的方法將根據聲明的變量自動取得相應的參數列表, 而原來選擇部分代碼的位置將會由一個呼叫新重構方法的代碼取代. 將一個長的代碼段分割成幾個方法能夠提高代碼的可重用性和可維護性.
?
抽出資源字符串[Delphi]
?? 再也沒有比用硬編碼引用字符串來實現部分源代碼的國際化多語言支持困難了. Delphi 2005 重構功能現在允許你將使用到的字符串抽出來生成資源(在你的代碼實現部分增加資源字符的聲明)
?
導入命名空間[Delphi/C#]
???? 有時, 你會用到在其它命名空間中定義的類, 方法, 字段或者類型, 為了將相應的命名空間增加到uses子句中(相對Borland Delphi)或者 using子句中(相對C#), Delphi 2005 的重構提供了自動將選擇標識符對應的命名空間導入的功能.參看重構中的Import Namespace..
???? 這個功能將讓你省下很多查找命名空間的時間
2.3? NUnit/DUnit 單元測試
????? 單元測試是一種給代碼增加測試的開發方法, 它通過運行測試項目來運行和驗證他們自己, 并根據源碼的有效性產生報告. 最好的效果, 單元測試應該在一開始就正確應用, 當你在寫實際代碼的同時就應該增加相應測試單元到其中(一些人甚至認為你應該先寫測試代碼, 再寫真正代碼來測試), 單元測試在重構中也扮演了重要的角色,如果只是為了驗證重構后的源碼是否有改變原來的行為, 這是一個正確的選擇.
?
DUnit/NUnit
???? 單元測試框架平時也稱為極限測試框架, 和極限編程有關.Delphi 2005 包括DUnit(相對Win32和.Net) 和 NUnit. DUnit (http://dunit.sourceforge.net/) 是Delphi 版本的單元測試框架(同時適應Win32 和 .NET), 而 NUnit (http://www.nunit.org/) 是和種 .NET 語言無關的單元測試框架, 能同時用在C#和Delphi for .NET 上.
?
測試項目向導
??? 對每一個項目而言, 你能通過測試項目向導增加一個對應的測試項目到項目組中. 對于 Delphi Win32項目, 將是使用DUnit 測試框架,. 對于 Delphi for .NET 項目, 你能選擇使用.NET版本的DUnit 測試框架, 或者選擇NUnit 測試框架, 而最后對C#項目來說, 將是使用NUnit 測試框架. DUnit(相應于.NET和Win32)和NUnit 測試框架都提供了可以選擇生成圖形界面或者控制臺方式來執行來顯示測試結果.
?
測試樣例向導
?? 在一個測試項目裹面, 你能使用測試用例向導來增加一個特定的測試用例以便對項目中的某些單元進行測試. 對每一個單元, 你能選擇需要的類和方法增加到測試用例中. 同時, 也會生成一個測試樣例的例子, 讓你以后可方便的參照增加自己的測試代碼.
?
測試運行者
??? 只要給測試項目中增加測試用例, 就會產生獨立的測試運行環境, 你就能在Delphi 2005 的IDE中開始運行相關的測試, 并且觀察運行結果. 你能得到所有錯誤和運行失敗(如果有的話)的反饋報告, 并且出錯時, 測試將會停止, 并在控制臺顯示出結果.
??? 使用單元測試, 能幫助提高你代碼的質量, 可維護性, 和可重用性. Delphi 2005 IDE整合了單元測試使更容易實現單元測試.
2.4????????? 數據庫
Delphi 2005 提供對ADO.NET , VCL, VCL for .NET 的數據訪問做得一樣的好!
?
ADO.NET 數據訪問支持
?Delphi 2005 實現了不少數據訪問功能的增強, 最顯著的是ADO.NET 方面, 但在BDE, dbExpress和新增的dbGO for ADO.NET 也有不少改進.
?
增強的Borland 數據提供者
???? 現在有不少ADO.NET對應的Borland數據提供者得到改進, 包括支持 interBase 的Boolean 字段, Oracle 包機制, 本地數據表支持, 獲得數據結構表, 還有支持 Sybase 12.5.
?
??? 還有如下的經過認證的BDP ADO.NET 數據提供者驅動: Borland InterBase 7.5(也能在InterBase7.1,7.0和6.5上工作, 但沒經過認證), Oracle 10g(同時也能在Oracle 9.2.0 和 9.1.0上運行), IBM DB2 UDB 8.x(能上7.x 上工作), 此外, 還能在Microsoft SQL Server 2000, Microsoft MSDE 2000, Microsoft Access 2000, 和Sybase 12.5上工作.
?
增強的設計器
?數據庫設計中一個重要組成部分ADO.NET設計器在Delphi 2005 中也得到增強. 增加了新的存儲過程測試支持, 這樣你就能測試指定存儲過程, 包括輸入參數, 然后運行存儲過程并且檢查返回參數的值(如果有的話)
?
Delphi 2005 測試SUB_TOT_BUDGET存儲過程對話框?
?
數據表映像功能幫助你為BdpDataAdapter指定映像到相應的數據表. 你能設定DataTable上的欄目到一個帶有更具體描述的內存表DataSet中映射關系. 你也能增加或移除內存數據表中的欄目.
?
對象設計器現在也為SQLConnection控件提供了一個聯接字符串編輯器, 允許你指定ADO.NET provider的聯接字符串.
?
異類數據支持, BDP 遠程對象
???? 新ADO.NET控件中提供了RemoteServer 和 RemoteConnection這兩個控件來支持快速開發三層的應用程序(使用.NET 遠程對象的結構). 另外兩個新的ADO.NET控件, DataHub和DataSync, 支持將不同類數據庫聚合到一個數據集. 這四個控件能組合使用, 這會導致分布式應用程序會使用大量不同的ADO.NET數據提供者. 在這個結構, DataHub和RemoteConnection處于瘦客戶層中, 而RemoteServer和DataSync 控件將處于服務層, 并聯接到數據提供者.
?
??? BdpDataAdapter的自動更新功能也得到增強, 現在能解決多數據表更新, 并且能處理更多的錯誤情況.
?
數據遷移
??? BDP控件組中有一個特別的控件bdpCopyTable中支持數據遷移操作, 它使你能夠將BDP支持的數據表復制到另外一種類型上.
?
數據集類型(.NET)
??? 數據表類型現在能夠編繹成標準.NET裝配件. 它還支持Web Services的數據集. 項目管理器提供一個上下文相關的菜單來設置數據集中的關聯和數據表編輯集合, 這樣, 你能更方便的修改數據集類型
?
增強的數據庫瀏覽器
??? BDP 數據提供者相應的數據庫瀏覽器已經在幾個地方作了增強。 現在可以簡單的將數據從一個BDP數據提供者遷移到另外一個,這個功能能夠允許你將一個數據表從一個BDP數據提供者復制另外一個上面. 這樣會復制和重新建立復制目標數據表的元數據, 即使這個數據根本就是來之不同的數據源, 如將Oracle的數據遷移到MSSQL上.這和BdpCopy控件的行為類似.
?
?? 數據庫瀏覽器還有查看額外的元數據的能力, 并且允許你直接在數據庫瀏覽器中查看和修改數據庫模型, 你能直接在裹面創建新的數據表, 修改數據表還有刪除存在的數據表.
?
? 同時, 你還可以直接在數據庫瀏覽器中拖拉一個存儲過程到窗體設計器中, 這樣, 將會創建一個BdpConnection(如果需要)和一個BdpCommand實例, 并且自動設置BdpCommand的參數對應到指定的存儲過程.
?
VCL和VCL.NET的數據庫支持
?? Delphi 2005中對VCL和VCL.NET的數據庫支持由BDE, dbExpress和 dbGo for ADO,以及InterBase Express(IBX)組成, 這些數據訪問技術同時在于VCL和VCL.NET的項目中可用, 這樣, 提供了一個無縫的升級Win32程序到.NET的方法.
?
dbGO for ADO
?? 在創建一個VCL.NET的應用程序, Delphi 2005 現在同時支持Win32和.NET的 dbGO for ADO, 這樣使移植Win32 dbGO for ADO的應用程序到.NET框架變為可能, dbGO for ADO控件需要安裝MDAC 2.8 來支持.
?
dbExpress
???? dbExpress 控件組擴展了TSimpleDataSet來支持.NET, 并且提升了TSQLStoredProc的執行效率, 同時也對元數據進行改進.
?
???? 下列的驅動現在已經通過認證可直接用在dbExpress: Borland InterBase 7.5 (同時也能使用 InterBase 7.1, 7.0 和6.5, 但沒經過認證), Oracle 10g (能使用 Oracle 9.2.0 和 9.1.0), IBM DB2 UDB 8.x (能使用 7.x), Microsoft SQL Server 2000, IBM Informix 9.x, SQL Anywhere 9 (能使用 ASA 8), MySQL 4.0.x, and Sybase 12.5.
BDE
?? 針對VCL和VCL.NET應用程序的Borland 數據庫引擎(BDE), 用來支持本地的dBASE和Paradox數據集訪問. BDE for .NET 版本現在已經改進, 不再需要指定路徑, 能自動裝載BDE相關的DLL文件了,? 它還改進了訪問BLOB的性能, 還新增了幾個以前沒有的, 針對.NET的BDE控件, 它們是: TUpdateSQL, TNestedTable, 和 TStoredProc.
?
IBX
? InterBase Express (IBX)提供VCL和VCL.NET應用程序直接聯接到InterBase 的功能.
?
2.5 Web
? Delphi 2005 包含了大量在VCL(Win32和.NET)和ASP.NET下增強的Web開發技術.
?
Web部署管理器
?
??? Delphi 2005 親增了一個Web部署管理器, 能使用在ASP.NET Web Form各ASP.NET WEB Service項目中, 同時期intraWeb能夠同時適應VCL和VCL for .NET.Web部署管理器能夠聯接到目錄(本地的或者網絡上的)和FTP 目標. 部署管理器的窗口還能同時顯示本地的文件(從項目目錄中)和遠程的文件(從目錄或者FTP位置), 而且你只需單擊一個選項就可實現整個項目的部署. 你還能執行比較, 移除文件等到操作. 部署的設置就與你的項目文件保存在一起, 所以, 你能以一致的配置方式在不同的時間部署你的項目. 這個是一種非常有效和快捷的部署方式.
??? 除了支持ASP.NET和IntraWeb項目之外, Web部署管理器還能擴展來支持的其它不同的項目類型.
?
Web數據控件
?? Web 數據控件能用來編寫功能強大的數據驅動的ASP.NET web 窗體應用. Delphi2005 引入了大量新的Web數據控件, 包括DBWebAggregateControl, DBWebSound, DBWebVideo, 和 DBWebNavigationExtender等,.
?
DBWebAggregateControl能用來顯示數據集中各個欄目的聚合值,? 實際上可能用來顯示平均值, 計數值, 最小值, 最大值, 總額.
?
DBWebSound和DBWebVideo控件被加進來支持音頻和視頻格式. 可以通過一個DBWebDataSource控件聯接到數據集對應的字段或給它一個URL路徑.
?
DBWebNavigationExtender控件在下列這種情況下非常有用, 就是你想將數據修改發送到數據集, 而又不想使用DBWebNavigation控件時(特別是控件中那個ApplyToServer按鈕). DBWebNavigationExtender是一個非可視化控件, 能被用來擴展標準的Web控件--如按鈕—它帶有的功能和DBWebNavigator的按鈕一樣. 所以, 你能用它來編寫一個自己的導航條控件. 除了這四個新Web控件外, DbWebDataSource控件被擴展增加了一個OnAutoApplyRequest事件, 并且現在支持嵌套的更新和刪除.
?
?? 除了DbWebDataSource之外, Web數據控件現在還能聯接到EcoDataSource—一個聯接到ECO II ExpressionHandler的控件.
?
?? Delphi 2005 還提供了一個新的Web數據控件向導讓你能編寫兼容于ASP.NET控件的自己的Web數據控件(同樣能聯接到DbWebDataSource 或者 EcoDataSource)
?
?? Web數據控件現在支持XML緩存, 這個強大的功能能給web客戶端實現一個服務端公文包.
?
Web 數據導航
???? Delphi 2005 Web數據控件現在擁有控制導航命令的功能, 它使用相應的導航API, 如RegisterNextControl, RegisterPreviousControl, RegisterFirstControl, RegisterLastControl, RegisterInsertControl, RegisterDeleteControl, RegisterUpdateControl, RegisterCancelControl, RegisterUndoControl, RegisterUndoAllControl, RegisterApplyControl, RegisterRefreshControl, 和 RegisterGoToControl.
?
服務端控件
??? ASP.NET的HTML類控件現在能在后臺文件用代碼表示成控件了, 通過選用”Run AS Server Control”這個選項, 將會增加一個 runat=server 屬性到控件的腳本中, 這就好象在控件的源碼文件中直接聲明.
?
模板編輯器
??? Delphi 2005 現在為DataGrid和DataList增加了一個模板編輯器, 讓你能夠定義和更容易的編輯你自己定制的欄目模板.
?
IntraWeb
當使用VCL(Win32或者.NET)時, Delphi 2005 支持使用AtoZedSoftware (www.atozed.com)公司的IntraWeb來開發應用. IntraWeb允許快速的所見即所得式來設計Web應用程序, 很象ASP.NET, 但還是有很多地方不同. IntraWeb 對的優點就是對用戶來說不用關心底層的HTML語法和能夠幫用戶管理網頁的狀態, 這些ASP.NET是做不到的. IntraWeb 類的WEB 應用程序和非可視化的VCL控件是兼容的, 如數據訪問面板中的BDE, dbExpress, dbGo for ADO和InterBase Express(這個意味著可以從Win32遷移升級到.NET), 相反, ASP.NET的應用程序要擁有數據訪問的能力必須使用原生的.NET控件, 如ADO.NET和BDP.
?
2.6 企業核心對象 ECO II
Borland C#Builder 1.0和 Delphi8帶了第一版的ECO, 現在在Delphi 2005 中得到了極大的加強來適應有高伸縮性要求的企業應用開發. 相對初始版本, 在 ECO II有不少改進增強.
?
?? 其中最重要的增強總結如下:
?
- 支持可伸縮性, 分布式應用程序
?
- 支持 ASP.NET ( Web Forms 和 Web Services)
?
- 支持映像到一個存在的數據庫
?
- 針對易用性優化, 以使使用ECO流程更加容易
?
可伸縮性, 分布式應用
最重要的部分是, ECO II 現在具有企業級的伸縮能力. 相對第一版本的client/server 解決方案, ECO II 同時支持client/server 和遠程解決方案. 當你編寫有伸縮能力的ASP.NET或者WinForms應用程序時, 有幾個可能采用的結構. 都非常簡單易用. 在同進程中或不同多進程中,??? 想同步多個不同緩存對象如EcoSpaces 時, 可以用新增的PersistenceMapper來管理,. 同步持久性的映射關系可以在同進程內部自我執行, 或者, 更可能的情況, 在服務器中的一個進程運行.
?
ECO II and ASP.NET
現在使用Dephi 2005, 我們能夠組合ECO II和ASP.NET一起使用, 同時適合ASP.NET Web窗體和ASP.NET Web 服務方式.Borland 的Web數據控件通過給EcoSapce綁定到一個新的EcoDataSource組件來導出對象, 這是用OCL的表達方式來輸出一個數據源, 并且還能產生一個數據感知的ASP.NET WEB 窗體中. 同樣的操作能適合任何常用的原生ASP.NET Web 控件. ECO 組件, 如ExpressionHandler, 能夠提供一個可以當成DataSet 的元素列表, 并且可綁定到任何ASP.NET 組件上, 如DataList 和 DataGrid. 因為對ASP.NET應用程序提出的請求都是無狀態的, 我們能夠在session 或者在應用層次上維護EcoSpace的狀態.
ECO II 使用樂觀鎖, 當發生沖突時, 會使用沖突決議來決定執行正確的動作.特別在當一個Eco Sapce檢測到在后臺數據庫的數據和在EcoSpace中保存的”舊值”不同時, 它將會注冊一個沖突到EcoSpace內部列表中. 開發者能調用RetrieveChanges來得到其它EcoSapces中發生的任何改變, 還可用GetChanges來收集未解決的沖突, 并決定如何處理(通常由最終用戶控制決定如何解決)
?
Delphi 2005 設計時的ECO II ASP.NET Web 窗體
?
映像到現存的數據庫
?帶有ECO II的Delphi 2005 現在有可能利用現存數據庫來實現應用程序持久性. 它是利用一個新加強的使用XML文件模型驅動的對象-關聯映像來實現. 這個強大的菜單達已存在的MS SQL server, ORACLE 或者 InterBase 數據庫, 并且如UML模型一樣建立映像模型, 并且用類將數據庫的數據封裝起來.
增強的EcoSpace設計器
EcoSapce 的功能在Delphi 2005中得到很多的增加, 包括擁有產生默認的XML模型映像文件, 將ECOI的數據庫格式轉為ECO II的格式, 拆包/包裝一個現存的數據庫. EcoSpace設計器同時增強了氣泡式提示, 顯示當前一系列需要完成任務的列表, 例如下圖的PersistenceMapperBdp.
?
Delphi 2005 ECO II 設計時氣泡式提示
?? 工作任務列表會自動檢查, 所以, 你永遠都會得到一個最新提示, 提示你什么是已經完成的, 那一步還需要繼續工作.
?? 另外一個用氣泡提示的例子, 當你打算打開一個新的ECO包時, 氣泡提示會顯示所有你選擇的ECO包中定義的類名.
?
ECO II 項目對象
?????? Delphi 2005 現在能產生幾個不同的ECO II項目. 對于C#類型, 我們能創建一個ECO ASP.NET Web應用程序, 或者ECO ASP.NET Web Service, 或者 DLL中的ECO Package(所以我們能在另外的項目中引用這個EcoSapce來使用對應的DLL), 還有ECO WinForms 應用程序. 對于Delphi for .NET類型, 我們能創建ECO ASP.NET Web 應用程序, ECO ASP.NET Web Service和ECO WinForms 應用程序.
?
2.7 ALM
??? Delphi 2005 內嵌支持Borland 應用程序生命周期管理套件, 包括CaliberRM, StarTeam, 和 Janeva
?
整合StarTeam???
???? StarTeam 提供源碼版本控制的支持, 包括需求管理, 缺陷跟蹤, 分組討論記錄, 遠程協作開發. Delphi 2005 包含一個內置的StarTeam客戶端, 可以從菜單StarTeam或者項目管理器的右鍵菜單中調用, 你可以在Delphi 2005 的IDE界面中操作StarTeam. 你能將一個項目放到StarTeam中, 可以檢出文件, 也可以導入文件, 或者恢復到以前舊版本的代碼. 鎖定或者解鎖StarTeam倉庫中的文件, 等等操作.
?
??? 此外, 歷史管理器還支持StarTeam, 所以, 可以在本地的備份中或者StarTeam的倉庫中訪問,比較和恢復備份的文件.
?
內置Janeva
??? Delphi 2005 內置支持Janeva(在企業版和設計師版). Janeva能用來聯接.NET客戶端(C#或者Delphi for .NET編寫)到 J2EE的EJB 或者 CORBA 對象中. 當安裝了janeva(也就是安裝了Janeva IDE 插件), 在項目管理器的項目節點上會新增兩個菜單, Add J2EE Reference... 和 Add CORBA Reference..., 可以用來增加特定的引用.
??? 菜單Add J2EE Reference...在你選擇從一個.jar文件選擇一個EJB時會出現一個對話框, 而當你Add CORBA Reference...會在你選擇一個包含接口定義的CORBA對象的.idl文件時顯示一個對話框.. 在導入.jar或者.idl文件后, 你將得到一個原生對象, 它可以直接在.NET客戶端使用, 現在將不再需要額外的層(象Web Service 或其它網關類軟件), 而是利用 Janeva 裝配器直接聯接到J2EE EJB或者CORBA對象上. 以前版本的Janeva插件(C#Builder帶的)能產生C#代碼, 但Delphi 2005 產生的裝配件可以被任何.NET語言使用. 現在的Janeva 插件向導會根據janeva客戶端軟件產生相應的參數, 然后自動產生對應的app.config 文件.
?? *Janeva 要求分發你的應用程序時要帶有運行時許可證, 你可在Borland 的銷售許可中找到
?
?
2.8 編繹器/語言/調試器
??? Delphi 2005 編繹器, 語法, 調試器都有不少增強.
?
編繹器和語法的增強
?? Delphi 2005 編繹器實現了幾個性能有關的增強, 使編輯速度加快了. 編繹器現在已經支持Unicode和UTF8格式的源代碼文件, 可以使用Unicode來定義標識符和符號.
?
For ... in ... do
?? Delphi 語言增加了一個新的 for-loop 語法. 和 foreach 結構類似. 這個強大的特性可用來迭代訪問一個集合的值.
?
內聯函數
?
?? Win32和.NET的Delphi語言都增加了內聯函數, 使用它能提升程序的性能. 它取代了直接呼叫例程, 而是直接將被呼叫的例程的代碼放到呼叫代碼的位置(節省了呼叫和返回的時間, 還有參數管理的時間). 這個對小的例程, 不在同一單元范圍的例程, 或者帶有多參數的例程非常有用. 而對大的例程, 在應用內聯之前要仔細考慮效率和生成代碼大少之間的利弊.
?
?? 我們能直接用inline來標識一個內聯例程, 還可以使用{$INLINE AUTO}這個編繹指示. 后一個操作, 會讓編繹器自己選擇那些看起來會提升系統性能的例程進行內聯. 使用{$INLINE ON}編繹指示是你指定了從這個編繹指示開始的例程都將用內聯方式.
?
?? 有很多反對者認為在編繹器中并沒有實現內聯, 例如, 即使你能內聯包(裝配件)中的不內單元的例程,你不能跨包進行內聯. 同樣, 不可能內聯虛方法, 動態方法或者消息方法, 同樣不能內聯接口和dispinterfaces.
?
多單元命名空間
?
?? 上一個版本的Delphi for .NET 編繹器采用了將一個單元映像到一個命名空間的方法(這樣單元的名字將就是命名空間的名字). Delphi 2005 中擴展了這種方法, 現在一個命名空間可以由幾個單元組成. 例如帶一個單元名為Comp.Group.MyUnit.pas, 左手邊的Comp.Group是命名空間的名字, 而MyUnit.pas就是在命句空間里的一個局部單元范圍. 這個可以讓我們使用多個單元而設置他們同屬于一個命名空間(處理ASP.NET 的自定義控件是, 現在能用一個單一的控件前綴).
?
??? Delphi2005新的命名空間功能帶來的另一個效果是, 現在有可能使用Delphi2005來給現存的命句空間擴展功能. 例如, 可以新增一個MyUnit.pas單元給System Web 命名空間擴展新的類和類型 護展了的命名空間將成為所有包含System.Web.MyUnit.pas的應用程序和裝配器的一部分.
?
增強的調試器
??? Delphi 2005 Win32的調試器現在增強了對沒有帶調節試信息的Win32堆結構的支持. 當在IDE中調試時, 還帶有一個專門處理異常的對話框. 當一個異常被引發時, 將會有一個對話框彈出來讓你有機會選擇忽略這個異常類型 還是檢查這個異常對象, 包括一個選項來決定是真正引發還是繼續執行.
?
斷點列表
?? 內置編輯器也加強了斷點列表, 現在很適合用在條件句中或者群組中, 啟用和停用斷點可以簡單的在一個CheckBox 列表選擇就可. 這樣就不用彈出一個對話框選擇, 可以加速設置斷點.
?
?Delphi 2005 帶有可編輯字段的斷點列表
?? 在斷點窗口還有新的工具條.通過它你能直接刪除一個斷點, 或者刪除全部, 或者使全部立即都啟用, 或者編輯某個斷點的屬性.
?
新的調試視圖
???? Delphi 2005 包含4個新的Delphi 窗口. Borland Delphi8 for .NET提供了斷點的調試窗口, 調棧窗口, 監視窗口,線程和事件日志. Delphi 2005 增加了FPU, 本地變量, CPU和模塊窗口.
???? Delphi 2005 現在還提供了一個模塊窗口, 可以顯示應用域, 并且允許你操作應用域中的命名空間和配件的細節. 你能夠按名字或者基地址來排序顯示模塊.
???? CUP窗口是顯示當前源碼, 它能顯示IL(中間語言)和本地機器匯編語言,還有偽代碼
?
Delphi 2005 混合Pascal, ILASM和機器碼的CPU 窗口
?
并行調試
??? 使用Delphi 2005 IDE不僅可以用項目管理器同時裝載多個項目, 你還能同時運行Win32和.NET調試器。 你可以在同一個開發環境中調試Win32和.NET應用程序. 你甚至可以同時運行兩個調試器, 在項目管理器中切換到不同的項目(從一個語言切換到另外一種)
?
總結
?? 這個白皮書介紹了Delphi 2005 的關鍵新功能, 也介紹了一些已存在的技術的增強部分.
?? 就如你所看到的, IDE擁有一個增強的歡迎頁, 支持多語言, 備份歷史文件支持(可選擇內嵌的StarTeam), 浮動的VCL設計器, 同步編輯器, 實時錯誤提示, 實時幫助提示, 結構視圖, 幫助查找, 更好的檢索查找結果的功能, 工具面板向導幫助你更快的開始一個新項目.
?? 重構也是Delphi 2005 中的一個重要的新特性, 提供了重命名符號, 聲明變量, 聲明字段, 抽出方法, 抽出資源字符串,到導入命名空間.
?? 另外一個額外重大的支持是DUnit和NUnit單元測試, 內置于IDE的測試項目和測試例程向導.
?? 在數據庫方面, BDP組件更新了新的驅動, 增加了BdpCopyTable 組件, DataSync t DataHub組件來支持異構的數據庫. 而RemoteServer新增了RemoteConnection組件來編寫三層的.NET數據庫應用(DataSync 和 DataHub, 如果你需要, 可以甚至是異構的數據庫或者三層).
?? 對于Web開發, ASP.NET的調試器得到增強, 新增了dbWeb控件來處理計算的數據, 聲音, 視頻和導向條事件, 支持DataGrid和DataList的模板編繹器, 最后, intraWeb同時支持Win32和.NET WEB應用開發.
?? 企業核心對象(現在是ECO II)也加強了支持可伸縮性, 分布式開發, 支持ASP.NET(普通的和dbWeb控件), 并且具有在ECO模式中映像到已存在數據庫的能力.
?? Delphi 2005 提供內嵌的Borland ALM工具, 包括StarTeam,和Janeva(可以聯接J2EE和CORBA服務器).
?? 最后, 但不是最不重要的, 在編繹器和Delphi語言的許多方面都得到增強,如新的 for…in 循環, 內聯函數, 跨單元命名空間. 調試器得到增強, 使用了更好的斷點列表新的.NET調試窗口, 和并發的Win32和.NET項目調試.
有史以來最好的Delphi
?? 無論你的目的是在Microsoft Windows操作系統還是在Microsoft .NET1.1框架版本下開發組件或者應用程序,, Delphi 2005 對現代Windows開發提供了廣泛的, 高生產力的, 高質量的支持。
轉載于:https://www.cnblogs.com/delphixe/p/9752673.html
總結
以上是生活随笔為你收集整理的delphi 各版本的特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本散热不好怎么办
- 下一篇: 设备冗余技术——链路聚合