BCB RichEdit 字會不見!! |
尚未結案
|
lazybug
一般會員 發表:1 回覆:2 積分:0 註冊:2003-09-01 發送簡訊給我 |
因為我要字的內容有不同顏色的變化, 與反白的效果...
所以..我選擇了, RichEdit 來用... 很慘事的發生了...
在最下面的內容, 有特殊字...一般是看不到的..
如果你用 Memo 去 LoadFromFile, 與 SaveToFile 是都還正常,
但是用 RichEdit 去 LoadFromFile 與 saveToFile 之後, 那個會會被轉成 00, 造成文章內容只有到那個字之前... 怎麼會這樣呢? RichEdit 不接受新字嗎? 碼為 834E "豐水有?武王豈不仕"
------
-=Bug=- |
dhchang
一般會員 發表:7 回覆:9 積分:8 註冊:2003-05-15 發送簡訊給我 |
|
lazybug
一般會員 發表:1 回覆:2 積分:0 註冊:2003-09-01 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 因為我要字的內容有不同顏色的變化, 與反白的效果... 所以..我選擇了, RichEdit 來用... 很慘事的發生了... 在最下面的內容, 有特殊字...一般是看不到的.. 如果你用 Memo 去 LoadFromFile, 與 SaveToFile 是都還正常, 但是用 RichEdit 去 LoadFromFile 與 saveToFile 之後, 那個會會被轉成 00, 造成文章內容只有到那個字之前... 怎麼會這樣呢? RichEdit 不接受新字嗎? 碼為 834E "豐水有?武王豈不仕"lazybug你好< >: 你所說的新字,應該是說你新造的字吧< >! 這個問題呢,有點複雜,但簡單來說,TRichEdit和TMemo物件都還算在合理的運作範疇中,TRichEdit會將新字轉成00,是因為它看不懂這個字,所以應該是你前端造字的問題,我懷疑你的新字還沒有真正建立到系統的字表中,當然也不能百分百說TRichEdit不會不接受新字啦,但我覺得TRichEdit不接受新字的可能較小! 剛好我之前有研究過一些字碼及元件多語化的問題,所有這問題我覺得我還可以分析一下,不過有點小複雜和隴長,lazybug有興趣的話就看下去吧! <>> >> 先做一個.>"豐水有?武王豈不仕"> 然後用>> class="code"> TMemoryStream* ms=new TMemoryStream(); RichEdit1->Lines->SaveToStream(ms); ms->Position=0; Memo1->Lines->LoadFromStream(ms); delete ms; sample: 4.如何解讀RTF原碼 以上面的例子來說(無法做太詳細的說明): *注意是中文O.S. {\rtf1\ansi\deff0{\fonttbl 1 {\f0\fnil\fcharset136 \'b2\'d3\'a9\'fa\'c5\'e9;} 2 {\f1\fnil\fcharset2 Wingdings;}} 3 \viewkind4\uc1\pard\lang1028 4 \f0\fs28\'c2\'d7\'a4\'f4\'a6\'b3 5 \f1\'00 6 \f0\'aa\'5a\'a4\'fd\'b0\'5a\'a4\'a3\'a5\'4b 7 \par } 8我們發現整個TRichEdit中它共用了兩種font type去顯示文字,分別定義在2、3行,分別編號為f0、f1 第二行中,f0它的字集是136,即繁體中文,即後後面的 \'b2\'d3\'a9\'fa\'c5\'e9 表示是細明體 第三行中,f1它的字集是2,是一種符號字集,Wingdings就是它的字體 第五行中,表示"豐水有"這三個字是用f0的font type去show 第七行中,表示"武王豈不仕"這五個字是用f0的font type去show 第六行問題行,表示原來的834E這個字在繁體中文(136)中不合法,所以TRichEdit它會自已找一種font type去顯示它,這也是為什麼會多出f1這個font type的原因,而834E的字碼也被轉掉了! 遇到它不懂的字會後,TRichEdti所做的處理並無法預知,不過字碼一般會被轉成00或3F(即問號) 5.儘量以RTF原碼為依據 TRichEdit會顯示什麼,看它的RTF碼一定就可以瞭解,這是最正確的,之前我常常為了做多語自已去組一段RTF碼,再反塞回TRichEdit上,雖麻煩但結果一定對! 6.你說的00後面的字碼不見的問題 你說savetofile、loadfromfile反反覆覆後,00後面的字會不見,我的測試是不會的,原因是TRichEdit只有834E看不懂,後面並不影響,這也可由RTF碼中證實! 7.我覺得你真正的問題 follow一開始我所說的,我懷疑造字是否真有成功進入O.S.? 因為你也說了在你Load到TMemo上時,新字是看不見的,這就表示TMemo看不懂這個字,所以它show不出來,那TMemo依照什麼去認字呢?當然是系統中的big5字碼表(設系統是中文),所以也就是說字表中並沒有你的那個新字,所以我懷疑造字是否真有成功! 8.簡單測試辦法 由上,我們可以知道在TMemo已有問題,所以不用再try TRichEdti了! 你可以先直接試試在TMemo上用輸入法輸你的新字看看,看可不可以輸入成功就可以了,不用再用什麼TRichEdit、SavetoFile、LoadFromFile這麼複雜的方法去試新字可不可以顯示在元件上了! 我本身沒試過造字程式,所以不太懂怎麼用,造好的字是否可以存入系統等等的,呵呵!所以我沒辦法猜你造字過程會不會有什麼需 >! 發表人 - |
lazybug
一般會員 發表:1 回覆:2 積分:0 註冊:2003-09-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |