2012-01-09

Delphi XE2 UTF8測試

由於Delphi7不支援UTF8,造成程式中對於UTF8字元處理及顯示上的不便,因而興起測試一下目前新版本的支援度如何。在測試前先在網路上看一下網友使用的狀況,其中看到一條消息就是XE2已經有內建支援Regular Expressions了,真是讓人高興啊!!


目標主要測試TMemo、TComboBox、TiniFiles及RegularExpressions對UTF8的支援度。有畫面有真象。測試的過程有發現一些事,應該不算新鮮事應該也許早在Delphi2009就支援了。
  1. 一開始當然是先編個最基礎的空AP玩玩,看完真的很大便,Debug版要6M,找了半天弄個了Release版也要1.5M,哇~真是粉大~~,可能剛從D7過來的關係不太適應。
  2. TEncoding,使用TMemo和TStrings讀寫檔案時,可指定寫入檔案的編碼如:TEncoding.UTF8,預設好像是TEncoding.ANSI,問了一下G大好像在Delphi2007就支援了,也有看到用Delphi2009寫的Code。這樣就不必每次要先準備好對的格式的文字檔來stand by了。
    Ex:
    Memo1.Lines.SaveToFile('xx.ini',TEncoding.UTF8);
    -參考資料
  3. TIniFile差點讓人從椅子上掉下來,一開始使用D7慣用的語法去開*.ini,慘了讀不出UTF8格式的,但是ANSI的卻可以。心裡幹譙一陣嘀咕著要改怎不全部一起改咧?後來想想那麼大的公司應該沒那麼笨吧?
    開始到程式安裝的地方把Inifiles*.*的檔案挖出來,找到"System.IniFiles.pas",到裡面去找TEncoding這key word,還好讓我在TMemIniFile class找到。使用方式和TIniFile一樣,只是在宣告時要把TIniFile改宣告TMemIniFile就可以指定TEncoding.UTF8了。
    Ex:
    oIni: TMemIniFile;
    oIni:=TMemIniFile.Create('.\xx.ini',TEncoding.UTF8);
    -參考資料
  4. Regular Expressions是最讓人喜出望外的,在其他部份測試完要進行RE的部份時,正不知如何下手就直接問G大吧,結果找到[Embarcadero原廠資料],原來XE2的RE是承自於TPerlRegEx,讓原先的TPerlRegEx的user可以完全無痛更換開發環境,而且直接支援UTF8String解決了原先D7+TPerlRegEx對UTF8的處理問題。
    既然可以直接使用TPerlRegEx就不作他想了,使用上必須宣告uses System.RegularExpressionsCore,不可宣告uses RegularExpressions。在實際使用上目前發現有一點和D7版的不同,原本熟悉的SubExpressions[n]不見了,取而代之的是Groups[n],至於其他像replace、split有沒差異?因為少用就沒測了。
    Ex:
    uses System.RegularExpressionsCore;
    oRE: TPerlRegEx;
    -參考資料
其他XE2還有些特異功能像FireMonkey、跨Mac、支援x64等,因為沒環境就先不測了。
結論:綜合以上各點已滿足自己小小的需求,讓人粉想換個開發環境,唯一的缺憾就剩執行檔吃了歐羅肥的問題了。


沒有留言: