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

BCB RichEdit 字會不見!!

尚未結案
lazybug
一般會員


發表:1
回覆:2
積分:0
註冊:2003-09-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-09 15:07:05 IP:140.109.xxx.xxx 未訂閱
因為我要字的內容有不同顏色的變化, 與反白的效果... 所以..我選擇了, RichEdit 來用... 很慘事的發生了... 在最下面的內容, 有特殊字...一般是看不到的.. 如果你用 Memo 去 LoadFromFile, 與 SaveToFile 是都還正常, 但是用 RichEdit 去 LoadFromFile 與 saveToFile 之後, 那個會會被轉成 00, 造成文章內容只有到那個字之前... 怎麼會這樣呢? RichEdit 不接受新字嗎? 碼為 834E "豐水有?武王豈不仕"
------
-=Bug=-
dhchang
一般會員


發表:7
回覆:9
積分:8
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-14 12:47:31 IP:61.30.xxx.xxx 未訂閱
遇過類似問題, 在Ultra Edit 下的字 , 在 RichEdit 中會有一段不見, 後來發現原始文件中包含一些控制碼, 控制碼去除後就好了
lazybug
一般會員


發表:1
回覆:2
積分:0
註冊:2003-09-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-18 11:16:19 IP:140.109.xxx.xxx 未訂閱
是真的有字, 只是這個新字的字碼是 83 開頭, RichEdit 會將它變成 00, 所以, 在那個新字後的文章,在存檔後,都會不見了... 對了, 我用了 memo 卻不會有這個問題, 但是..我要用 RichEdit 來變色..所以... 嗚~ -=Bug=-
------
-=Bug=-
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-17 15:27:01 IP:61.63.xxx.xxx 未訂閱
引言: 因為我要字的內容有不同顏色的變化, 與反白的效果... 所以..我選擇了, 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-17 16:04:38 IP:140.109.xxx.xxx 未訂閱
目前的做法是,去安裝unicode 補完計畫, 在TRichEdit上只要看得到,就不會被亂改了.. 太感謝您的回答了! 先記下來! -=Bug=-
------
-=Bug=-
系統時間:2024-05-13 22:57:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!