今天就來試著解決這個問題
首先的判斷是:
Indy 的 BUG?
那就來看看其它的軟體是否能被正確顯示:
使用 Notepad++ 存放下載的文字內容 |
可以正確顯示,表示從 Indy 下載下來是正確的。
TMemo 元件的 BUG?
將 Indy 下載的文字,在 Design mode 下存到 TMemo.Lines 裡,再重新執行:
經 Design mode 儲存後再取出的執行結果 |
但,它就是 Unicode,不能顯示會是它們的錯嗎?
既然 Notepad++ 可以顯示,也許該從字型方面下手,會不會是 Tahoma 字型沒有支援 Unicode?
就來試試有掛「Unicode」的【Lucida Sans Unicode】字型看看吧!
呃啊啊!你這個小必取啊啊啊!! |
難道,這真的是 Delphi 的 BUG?
雖然 Delphi Bug 是出了名的多,但我們不能因為這樣就懷疑它,要心懷【無罪推定原則】(英語:presumption of innocence)才是。
那麼,會是 WinXP 這個系統的問題?
相同專案在 Win7 下執行結果 |
字型可以被正確顯示,我們真的是誤會 Delphi 了 (笑)
問題還沒解決,同樣是 WinXP,為什麼 Notepad++ 可以顯示,而 Delphi 卻不行?
是什麼樣的字型,可以正確被顯示出來?還是有什麼神奇的設定?
真相大白,兇手就是你! |
【Source Code Pro Medium】是 Adobe 近幾年提供給程式人員使用的等寬字型,也是 Unicode 字型。
到此真相大白,原來是 Windows 字型 Unicode 版本差異造成的問題,以【Lucida Sans Unicode】來說:
- Windows XP: V2.00
- Windows 7: V5.00
從版本上的落差大約可以知道字數的多寡。
最後來看看 Delphi 使用 Source Code Pro Medium 字型,是否真能正確顯示及使用吧!
最終結果 |
== 未完待續 ==
沒有留言:
張貼留言