2012-01-08

Delphi7上Unicode的問題

Delphi7是我慣用的開發工具,之前完全不考慮更換版本的最大原因就是新的版本真的是越來越肥了,重點讓人最不爽的是會在系統上裝一堆不曉得用不用得上的東東,就像MS的VisualStudio一樣。

這次在改寫[EzNetRadio]時加入了一個新平台[Now.in],在Web上的編碼UTF-8已是主流,HichannelNow.in皆然,不過Hichannel站台名稱上不會使用特殊字元所以在轉換及顯示上不會有問題,反之Now.in則不然,使用者強調的個人化造成站台名稱格式大相逕庭,而且有為數不少ANSI無法顯示的特殊字元,因此興起將EzNetRadio增加支援Unicode的功能。

Delphi7在Object、procedure及function的使用上,皆以AnsiString、String為主,但是Unicode的處理都必須使用WideString。在EzNetRadio中有使用到IniFile、MainMenu、PopupMenu及站台資料快速截取的靈魂TPerRegEx都必須要支援WideString及WideStringList包括Delphi7內建的字串處理函式,麻煩大了。

TntUnicodeComponents解決了*.ini上Unicode字元顯示在MainMenu及ComboBox的問題,支援WideString的IniFiles也在網上找到解決方案WideIniFiles,至於TPerlRegEx踹了半天都解決不了就只有先放棄了。

Delphi7在Unicode上是有一些解決方案,但還是缺東缺西的,像我這樣玩票的開發人員要自行開發或修改元件還是免了,因為頭髮會掉更多。

把花了一天做的測試弄個Sample以免下次又要重來。

下載Sample.zip

沒有留言: