全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4193
推到 Plurk!
推到 Facebook!

簡繁體轉換元件,D6/D7適用

 
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-14 11:12:26 IP:61.222.xxx.xxx 未訂閱
元件名稱: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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-26 22:04:30 IP:61.62.xxx.xxx 未訂閱
上傳程式碼,請指教
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-13 19:25:33 IP:218.16.xxx.xxx 未訂閱
DFM還是無法轉換。。。。。。。
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-14 14:13:28 IP:219.130.xxx.xxx 未訂閱
DFM無法轉換這個問題 各位大大都沒有發現嗎?
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-15 20:26:28 IP:61.62.xxx.xxx 未訂閱
印象中,如果是Form的Caption的話,則 要看到簡體字一定要在簡體系統 反之,繁體也一樣。    又,如果您所遇到的不是 Form.Caption 可不可以將您寫的程式放上來,借小弟看看? 謝謝!    感激您下載這個元件,並且測試它。 <>< face="Verdana, Arial, Helvetica">引言: DFM無法轉換這個問題 各位大大都沒有發現嗎?
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-15 23:48:17 IP:61.62.xxx.xxx 未訂閱
我寫了一支很簡單的程式,設計磨事實, 在Form上面放置 一個 TEdit,並且將 Edit.Text := '純粹測試'; // 寫入 dfm 一個 TctBigGB 然後在Form.OnCreate執行TctBigGB.ConvertObjToSysCharSet(self) 這程式是在繁體下編譯,跑起來正常 我將這個程式放在簡體系統下執行,則 「純粹測試」這四個字,是會變成簡體的。 不知道,您所說的dfm還是沒有轉換,是指在怎樣的操作下呢? <>< face="Verdana, Arial, Helvetica">引言: DFM無法轉換這個問題 各位大大都沒有發現嗎?
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-16 08:32:05 IP:219.130.xxx.xxx 未訂閱
因為dfm中保存的不在是中文,而是類似這樣的unicode, object Form2: TForm2 Caption = #31522#24645#25958#26497 轉換後還是一樣的,所以說無法轉換。。。。。。。
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-16 13:02:28 IP:61.222.xxx.xxx 未訂閱
這個元件是在程式實際執行時,才會真的做轉換的動作 在設計模式,是看不出效果的。 因此,如果您說的是設計時期的轉換, 那不在此元件的功能範圍。 我記得,有另一位大大,有寫一個專門改 pas 與 dfm 的工具, 或許那個工具才是你想要的。 <>< face="Verdana, Arial, Helvetica">引言: 因為dfm中保存的不在是中文,而是類似這樣的unicode, object Form2: TForm2 Caption = #31522#24645#25958#26497 轉換後還是一樣的,所以說無法轉換。。。。。。。
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-16 14:15:49 IP:219.130.xxx.xxx 未訂閱
是執行時要轉換的,我已經將程式發郵件給你, 請查收,謝謝!    
引言: 這個元件是在程式實際執行時,才會真的做轉換的動作 在設計模式,是看不出效果的。 因此,如果您說的是設計時期的轉換, 那不在此元件的功能範圍。 我記得,有另一位大大,有寫一個專門改 pas 與 dfm 的工具, 或許那個工具才是你想要的。
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-16 14:20:06 IP:219.130.xxx.xxx 未訂閱
或者是我還不懂的如何使用 這個元件吧。能否給個Demo 謝謝,大大! 發表人 - vagrant 於 2004/07/16 14:23:06
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-07-16 20:59:38 IP:61.62.xxx.xxx 未訂閱
以下是小弟寫的一個demo程式 與此程式在簡體、繁體系統中 執行時的剪影
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-07-17 08:33:52 IP:218.16.xxx.xxx 未訂閱
我想知道能不能转换dfm中的? 我发给你的那个例子能搞定吗? 發表人 - vagrant 於 2004/07/17 08:37:49
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-07-17 11:07:52 IP:61.62.xxx.xxx 未訂閱
上一封信裡,我寫的那個demo,就可以將記錄在dfm的中文字作轉換。 您可以抓下去看看。    而您的信件,我沒沒收到 可以放在這個討論區上嗎? 謝謝 <>< face="Verdana, Arial, Helvetica">引言: 我想知道能不能??dfm中的? 我??你的那?例子能搞定?? 發表人 - vagrant 於 2004/07/17 08:37:49
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-07-17 14:59:24 IP:218.16.xxx.xxx 未訂閱
問題是dfm中保存的不是中文啊, 中文已經被轉換為Unicode 程式已經上傳到這裏 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53381
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-07-17 23:00:54 IP:61.62.xxx.xxx 未訂閱
看過您寫的測試程式後,明白你的意思了。 假如,您要做的事情,是要直接對程式碼作轉換, 在此回答您,不行。 因為如您所說,自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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-03-07 00:09:28 IP:211.76.xxx.xxx 未訂閱
對不起,請問為何無法下載?
tonny2003
一般會員


發表:5
回覆:2
積分:1
註冊:2005-09-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2006-08-05 12:00:26 IP:218.17.xxx.xxx 未訂閱
下载了,不能用
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#18 引用回覆 回覆 發表時間:2006-08-29 12:57:39 IP:163.17.xxx.xxx 未訂閱

請問元件哪裡可以下載??

謝謝!

系統時間:2024-05-16 5:21:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!