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

從中文字中取得〈部首〉及〈筆畫〉的函式大公開!!

 
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-12 00:00:42 IP:219.68.xxx.xxx 未訂閱
會發表這篇文章..是因為看了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=59465 試著幫她找資料..不過好像找不到有人在討論這種東西的... 因為這種東西給人的印象通常是要建一個龐大的DB..對應到字的部首及筆畫.. 是一項浩大的工程..不過我不死心..找了快一天的資料(害我隔天唸書沒精神) 還去研究各種編碼..希望能從裡面找到一些蛛絲馬跡.. 其中..我發現了: > < SRC="http://delphi.ktop.com.tw/loadfile.php?TOPICID=18655752&CC=417228"></IFRAME> 看到這兩篇文獻之後...我就開始著手製作...撰寫了以下幾個函式

function GetUnicodeWord(str:string):WideString;   //將BIG字元轉成UNICODE
function GetUnicodeCode(input:WideString):String; //將UNICODE碼
function GetBIG5Code(input:String):String;        //取得BIG5碼
function GetWideString(code:integer):WideString;  //將UNICODE碼轉成UNICODE字元
function GetWordCount(Str:string):Integer;        //取得字數
function GetbushuCode(code:integer):WideString;   //取得部首
function GetPenCode(code:integer):integer;     //取得比畫
於是..我利用了BIG5與UNICODE的特性..撰寫這核心部份不到50行的程式.. 在這邊和各位分享..< > 其中..因為部首的部份..有些無法以 > 明天繼續努力唸書..ㄏㄏ< > =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
附加檔案:59607_取部首.rar
Yaolung
一般會員


發表:0
回覆:3
積分:0
註冊:2002-08-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-13 03:29:44 IP:220.138.xxx.xxx 未訂閱
Dear 大大:    感謝您的分享!    從Big-5 Fundamental Functions (Chinese).htm 的資料內發現有四個字的筆畫是例外       Big-5碼  筆畫 1.耄    ACFE    10 -->被歸類到筆畫9 2.赭    BDEA    18 -->被歸類到筆畫15 3.銬    BE52    14 -->被歸類到筆畫15 4.薦    C2CB    17 -->被歸類到筆畫18    另外筆畫32的"籲(C67E)",也可以歸到例外內檢查。 所以GetPenCode()需先檢查是否為例外的字元,如果不是才可進到for-if轉換式轉換
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-13 11:52:30 IP:192.192.xxx.xxx 未訂閱
引言: Dear 大大: 感謝您的分享! 從Big-5 Fundamental Functions (Chinese).htm 的資料內發現有四個字的筆畫是例外 Big-5碼 筆畫 1.耄 ACFE 10 -->被歸類到筆畫9 2.赭 BDEA 18 -->被歸類到筆畫15 3.銬 BE52 14 -->被歸類到筆畫15 4.薦 C2CB 17 -->被歸類到筆畫18 另外筆畫32的"籲(C67E)",也可以歸到例外內檢查。 所以GetPenCode()需先檢查是否為例外的字元,如果不是才可進到for-if轉換式轉換 < face="Verdana, Arial, Helvetica"> Yaolung您好...謝謝您的意見.. 這個問題我之前在寫的時候有注意到... 其實有例外的字也不算多..我是純研究性質的..因為我太懶了< > 所以如果針對有需求的人們..還需要再加以改進喔< > 其實不只big5有例外字..unicode也有...都是因為原本的標準少排了一些字 後來才補進去的.. 改進方法也不難...只需要在 function GetbushuCode(code:integer):WideString; //取得部首 function GetPenCode(code:integer):integer; //取得比畫 這兩個函式之前... 寫另外2函式..例如..GetBushuExcept及GetPenExcept 裡面定義一個例外矩陣..當找到這些碼時就直接傳回..不透過offset.. 並在GetbushuCode及GetPenCode一開始的地方分別加入這兩個函式 這樣就很完美囉 =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
chris
一般會員


發表:1
回覆:10
積分:2
註冊:2002-09-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-03 09:41:36 IP:202.175.xxx.xxx 未訂閱
檔案不能下載, 請檢查..... thx 發表人 - chris 於 2005/11/03 09:44:03
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-04 07:35:11 IP:220.134.xxx.xxx 未訂閱
引言: 檔案不能下載, 請檢查..... thx 發表人 - chris 於 2005/11/03 09:44:03
中文檔名,請另存檔案後才開啟 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
chris
一般會員


發表:1
回覆:10
積分:2
註冊:2002-09-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-04 10:36:24 IP:202.175.xxx.xxx 未訂閱
版大,我仍然不能下載, 我想原因跟中文檔名無關, 因為他還未出另存新檔的WINDOWS, 就已經掛了,請幫忙解決。 謝謝...
shortie
一般會員


發表:0
回覆:1
積分:0
註冊:2005-08-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-25 00:37:09 IP:61.219.xxx.xxx 未訂閱
我也無法下載 有其他地方可以下載嗎?
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-25 08:40:14 IP:218.175.xxx.xxx 未訂閱
CJK Radicals In Unicode    特幫 geniustom 版主 補上英文檔名壓縮檔    下載位置 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=81863    網友大大 請問你的作品,文章等 是否願意貢獻 給於KTOP網站,日後使用於DVD/VCD發售 如果可以請在簽名檔上宣告個人授權 以加速KTOP網站日後DVD/VCD資料的誕生 台灣災難都是事後算帳 無人飛行載具(Unmanned Aerial Vehicle,UAV)為什麼沒大量應用於救災行列 絲絲有2種 .net有很多種 一種治眼睛是MS 另一種治腦筋是Borland
fuji65
一般會員


發表:11
回覆:8
積分:3
註冊:2008-03-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-04-05 17:05:18 IP:114.41.xxx.xxx 訂閱
請問如何用 GetWordCount(Str:string):Integer; 取中文字數?
thanks!!
系統時間:2024-04-20 11:24:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!