Delphi XE7試用記錄1

在網上看到XE7的一些新特征,覺得完整Unicode支持、擴展Pascal語法、更多功能的庫都很吸引人,決定試試XE7。

XE7官方安裝程序很大,因此選擇了lite版,網上可以搜到下載地址,安裝很容易,注意要把需要的附加功能包和安裝程序放在一起,而且不要更名。

安裝后,先建立一個VCL窗體程序,測試一下。

XE7啟動速度比Delphi7慢了許多,畢竟程序大了很多,自帶的組件包也多了很多。減少組件包的數量可以提高一些速度,網上說有默認程序選項,設置以后可以適用于新工程,但是我沒有找到。排除組件包需要一個個反選,但信息保存在*.dproj文件中,可以從設置好的項目中復制相關信息,快速設置排除組件包。也可以把一個項目放到項目倉庫中,甚至可以設置為默認項目,以后每次新建項目就從這個項目的副本。

新建VCL窗體程序,直接編譯,編譯后的程序達到10mb,比Delphi7大了很多倍。有人說目標程序的體積不是問題。(真正做項目,體積鮮有少于3M的,但,你會發現,無論你怎樣添加第三方組件,delphi的目標程序鮮于大于6M的,原因在于,delphi無論怎樣做,它很多擴展的unit都本源于一些基本的Unit。雖然,用xe2會比d7體積大個1M,但如果你用它做項目,會發現最終目標程序,只會比用d7多1M多一點點,因為體現不會因為窗口和組件的增加而增加,這種增加不是線性的。)

但是同樣的功能,占用空間多也不太好,尤其是用于測試的小程序多了,占用空間也很可觀。在工程文件中關閉調試信息、關閉RTTI可以減少1mb多。在工程文件的program字段下增加下面兩句關閉RTTI:

{$WEAKLINKRTTI ON}

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

目標程序任然大于9mb。但是安裝JVCL后,發現Examples中的工程編譯后卻只有2-3mb,比較了一下工程選項,也沒有找到原因。期待高手可以解答這個問題。

既然JVCL的工程比較小,就把一個JVCL的工程的內容清空,作為新建工程的出發點,這樣新建工程也就3mb左右了。后來發現從Delphi Projects中的SDI Application出發新建項目,編譯的程序也只有2mb多點。

VCL Forms Application: Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

SDI Application: Winapi.Windows, System.Classes, Vcl.Graphics, Vcl.Forms, Vcl.Controls, Vcl.Menus, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.ImgList, Vcl.StdActns, Vcl.ActnList, Vcl.ToolWin, System.Actions;

上面是兩個項目窗體引用的單元,稍有不同,應該不會有很大差別。在SDI項目中增加了一個VCL Form,這個單元引用和VCL Forms Application項目中的Form引用相同,編譯后尺寸仍然是2mb多點。讓人費解。

編譯選項不是原因,單元引用也不是原因,再看看工程代碼。VCL Forms Application的工程代碼中多了一句:

Application.MainFormOnTaskbar := True;

應該是用于Win7以上操作系統工具欄的代碼。把這句注釋掉,仍然不能減少程序的大小。

難道還漏掉了什么?既然無法發現原因,就把SDI項目中原來的窗體從項目中刪除,把這個項目保存到項目倉庫中,作為新建項目的出發點。

目標程序大小的問題總算有了對策。