簡繁體轉換元件,D6/D7適用 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
元件名稱:TctBigGB * 屬性 - property Big5FontName: String
繁體字的字形名稱,預設細明體 - property GBFontName: String
簡體字的字形名稱,預設宋體 * 事件
- property BeforeConvertString: TctConvertStringEvent
在字串轉換前 - property AfterConvertString: TctConvertStringEvent
在字串轉換後 * 方法 - function AnsiStringToWideString(S: String; sCharSet: TctCharSet): WideString;
將Ansi轉為UniCode,sCharSet指輸入之S字串的CharSet。 - function WideStringToAnsiString(W: WideString; sCharSet: TctCharSet): String;
將UniCode轉為Ansi,sCharSet指輸出之字串的CharSet。 - function StrToBig5(S: String): String;
將GB字串轉為Big5 - function StrToGB(S: String): String;
將Big5字串轉為GB - function ConvertStrToSysCharSet(inStr: String; OrgCharSet: TctCharSet): String;
將輸入之字串,轉為當時系統的字集。OrgCharSet為傳入之字串的原字集,預設csBig5 - procedure PropToBig5(Instance: TObject; PropName: String);
將物件的某屬性轉為Big5碼 - procedure PropToGB(Instance: TObject; PropName: String);
將物件的某屬性轉為GB碼 - procedure ObjectToBig5(AObject: TObject);
將物件全部轉為Big5碼 - procedure ObjectToGB(AObject: TObject);
將物件全部轉為GB碼 - procedure ConvertObjToSysCharSet(AObject: TObject; OrgCharSet: TctCharSet);
將物件轉為當時系統的字集。OrgCharSet為傳入之元件的原字集,預設csBig5 * 建議用法 - 首先,Form.OnCreate()執行TctBigGB.ConvertObjToSysCharSet(self)
這樣可以先確保儲存於dfm的中文字被正確的轉為簡體/繁體,
不會在簡體系統看到繁體字,或者在繁體系統看到簡體字。
也就是說,在繁體系統看到「體」而簡體系統看到「体」。 - 在TctBigGB.ConvertObjToSysCharSet(self)後,透過程式碼所建立之元件,
執行TctBigGB.ObjectToGB/TctBigGB.ObjectToBig5,將元件轉碼。 - 在程式碼中,任何需要用到中文字之處,包含設定元件屬性、顯示訊息等,
均以TctBigGB.ConvertStrToSysCharSet做過轉換,確保不會看見亂碼 - 依照以上之規範設計程式碼,則應可以簡繁體並用。 * 參考 - 大陸國標碼GB碼與台、港、澳BIG-5碼,來自吳榮森之作品。 最後,謝謝大家!
附加檔案:48237_Cvrt.rar
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
我寫了一支很簡單的程式,設計磨事實,
在Form上面放置
一個 TEdit,並且將 Edit.Text := '純粹測試'; // 寫入 dfm
一個 TctBigGB
然後在Form.OnCreate執行TctBigGB.ConvertObjToSysCharSet(self)
這程式是在繁體下編譯,跑起來正常
我將這個程式放在簡體系統下執行,則
「純粹測試」這四個字,是會變成簡體的。
不知道,您所說的dfm還是沒有轉換,是指在怎樣的操作下呢?
<>< face="Verdana, Arial, Helvetica">引言:
DFM無法轉換這個問題
各位大大都沒有發現嗎?
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
這個元件是在程式實際執行時,才會真的做轉換的動作
在設計模式,是看不出效果的。
因此,如果您說的是設計時期的轉換,
那不在此元件的功能範圍。
我記得,有另一位大大,有寫一個專門改 pas 與 dfm 的工具,
或許那個工具才是你想要的。
<>< face="Verdana, Arial, Helvetica">引言:
因為dfm中保存的不在是中文,而是類似這樣的unicode,
object Form2: TForm2
Caption = #31522#24645#25958#26497
轉換後還是一樣的,所以說無法轉換。。。。。。。
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
ctvincent
一般會員 發表:10 回覆:10 積分:4 註冊:2003-12-30 發送簡訊給我 |
看過您寫的測試程式後,明白你的意思了。
假如,您要做的事情,是要直接對程式碼作轉換,
在此回答您,不行。
因為如您所說,自Delphi6以後,只要是「雙位元的字」
都會以UniCode的格式儲存於dfm中。
因此,如果光是將dfm打開,是不會看到中文字的。
既然看不見中文字,也就沒有轉換的餘地了。 在此,與您分享個心得,
我們在Delphi的開發程式時,按 ALT-F12,
可以看見中文字,其實那是IDE案中轉換的
又,Delphi所編譯出來的程式,
在實際執行的時候,也與Delphi的IDE一般,
暗中將UniCodeString轉為AnsiString。
可是,繁體的「體」會被顯示成簡體的「體」
(這該說UniCode好,還是不好呢?)
所以,我才會設計出這個元件。
目的很單純,就是讓程式在「執行」的時候,
「體」變成「体」。 舉個例子: 有一位設計師,在簡體環境設計程式,
那他設計出來的程式,在執行時期,應該是以顯示簡體字為主。
不管是元件的屬性(如 > <>< face="Verdana, Arial, Helvetica">引言:
問題是dfm中保存的不是中文啊,
中文已經被轉換為Unicode 程式已經上傳到這裏
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53381
發表人 - ctvincent 於 2004/07/17 23:02:15
|
MichaelChien
一般會員 發表:33 回覆:37 積分:14 註冊:2002-12-27 發送簡訊給我 |
|
tonny2003
一般會員 發表:5 回覆:2 積分:1 註冊:2005-09-13 發送簡訊給我 |
|
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |