請教BCB6製作多國語系切換功能 遇上了奇怪的問題 |
缺席
|
upen24931251
一般會員 發表:4 回覆:1 積分:1 註冊:2011-03-07 發送簡訊給我 |
我的作業系統是WinXP繁中語系
而我的BCB6是professional而非企業版, 企業版似乎有個很好用的多國語言功能,但是在專業版上面看不到這東西, 所以用Resource DLL Wizard這種做法我就先放棄不理了. 已經參考了很多篇網路上的資料, 最後決定用INI檔案方式來實現多國語系: 我先以版上的文章為基礎來實做, 當完全使用原本的程式碼的時候, 繁體以及英文可以切換無誤, 但是簡體卻會出現亂碼,而這個問題在切換作業系統的語系之後, 會變成繁體是亂碼,簡體正常顯示; 查詢網路的結果,得到BCB只對AnsiString有反應, 所以我去找了一個可以顯示Unicode的方法,也就是安裝TntUnicode 安裝了TntUnicode之後,想說應該可以顯示簡體中文了吧! 於是將ini檔案另存為unicode格式, 接著執行測試程式如下: 同時創造兩個按鈕,其Caption輸入同一簡體字串:多国语言系统测试 標準元件出現的結果是:多??言系??? 而TntUnicode元件出現的是:多国语言系统测试 所以我想應該可以使用TntUnicode元件成功地呈現我想要的"自由切換語系的功能"吧! 我所想達成的功能是: 有三個按鈕分別代表簡體繁體英文,當我按下任意一個按鈕的時候, 整個Form裡面的所有按鈕還有文字都會變成該語系. 但是,當我按照網路上的說明,把原本的程式再次改寫, 當我按下簡體按鈕,顯示出來的卻是一堆問號與繁體交雜, 這時候我想說會不會是因為 "TIniFiles"這個傢伙吃下去AnsiString也只吐AnsiString出來, 所以我用API的方式,先讀進AnsiString格式的繁體中文Big5編碼,轉換成GB碼, 流程:Big5->Unicode->GB繁中->GB簡中 而出來的結果如同預料,和一開始沒有用TntUnicode元件的情況依樣,是一堆亂碼; 我在.cpp標頭檔寫上:#define UNICODE 然後把程式內容所有改成以WideString回傳,執行結果變成一堆問號和繁中交雜. 網路上另外一種做法是用Resource DLL Wizard來實現, 但是不知道為何,我的BCB6無法像網路上說的那樣,將reinit.pas編譯成reinit.hpp, .pas不知道為何都無法編譯,所以這個方法我就放棄了. 我想問的問題如下: 1: TINIFiles輸入輸出如果只能用AnsiString的話,是不是在讀取的一開始, 不管我輸入的文件是Unicode或者是Ansi,他都會直接強制轉換成Ansi來做處理, 所以我再輸出之後做處理是沒有意義的,因為在輸入的時候,就已經因為強制轉換而被破壞掉了? 2:如果真的如我問題1所說,在讀取的時候格式就被破壞掉了, 那麼是否有別種讀取方法可以不損害格式,而能夠讓TiniFile輸入和輸出都能夠維持是Unicode呢? 3:搜尋了很久也找不到TntUnicode的說明文件,是否在TntUnicode裡面有取代TiniFiles的功能存在呢? 4:如果我還是想用INIFIle這樣的做法來完成多國語系切換,是否還有別種做法? 如果有的話,是否可以分享一下如何實現呢? 5:曾經看過一個網站介紹關於繁體中文Unicode和簡體中文Unicode字串在支援與不支援Unicode的程式傳輸, 會出現很多問號,而在因為繁簡Unicode兩者有重疊部分,在這重疊部分還是會正常顯示, 但是其他未重疊的部分則會用問號表示. 所以像我明明輸出了簡體Unicode但是卻沒辦法正常顯示,或許是因為上述這原因吧, 那麼,簡繁體Unicode之間又該如何轉換呢? 或者這是字集選擇的問題呢? (我在設定上通通都是用Default_CharSet) 希望能有人幫我解答這些問題,在此先謝過大家的耐心囉. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |