討論區快速選單
知識庫快速選單
網路投保旅行平安險 2018年Oracle資料庫12c系列課程 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
可否在程式中判斷中文字的注音碼或倉頡碼
更改我的閱讀文章字型大小
作者 : primonine(九兄弟)
[ 貼文 14 | 人氣 5877 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/13 下午 11:08:26
各位大大!!
作者 : primonine(九兄弟)
[ 貼文 14 | 人氣 5877 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/13 下午 11:10:51
對不起!!沒KEY完,我想要讓USER輸入完中文後,幫他秀出注音碼,請問各位是否有撰寫過類似功能?
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3732 | 人氣 170106 | 評價 34520 | 評價/貼文 9.25 | 送出評價 125 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/14 上午 02:36:17
寫過是寫過, 但不是三言兩語可以講清的. 首先你要有中文字的注音碼資料庫, 以及倉頡碼資料庫, 這部份可以由以前的倚天中文系統裡取得. 檔案裡的格式, 可以參閱李明清著的"中文系統徹底研究-輸入法與秀字"一書 (旗標出版)第一篇第4章與第5章. 不過倚天中文系統, 包括目前Windows的注音輸入法, 中文字的"注音"其實都有些不正確, 也未包括所有unicode的中文字. 我後來參閱中華書局的"辭海", 將全部中文字的注音一一訂正出來, 只是這個中文注音檔版權是屬於我的公司, 並無法給你. 如果你不知如何去轉倚天中文系統的注音檔, 最快也是最笨的方法, 就是用Windows的注音輸入法, 一個音一個音地將所有字打出來. 雖然笨, 但很直接. 有了注音檔, 要顯示注音出來, 就看你如何去建立之間關係的結構了.
作者 : laygeyen(小賴) Visual Foxpro優秀好手
[ 貼文 96 | 人氣 1185 | 評價 900 | 評價/貼文 9.38 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/14 上午 09:32:27
我有小工具 DLL檔可處理注音部分
給個MAIL寄給你
作者 : primonine(九兄弟)
[ 貼文 14 | 人氣 5877 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/14 上午 11:06:09
感謝大大,我的e_mail是 georgeku@ms2.hinet.net
作者 : laygeyen(小賴) Visual Foxpro優秀好手
[ 貼文 96 | 人氣 1185 | 評價 900 | 評價/貼文 9.38 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人primonine註記此篇回應為最佳解答 2005/4/14 上午 11:14:50
檔案已寄出
試試是不是你要的 ?
作者 : vfp_rong(R)
[ 貼文 1 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/18 下午 12:30:41
我亦有此需求,可否請 laygeyen(小賴)大大Mail一份給我,Thanks
Mail:hwangyea@ms6.hinet.net
作者 : laygeyen(小賴) Visual Foxpro優秀好手
[ 貼文 96 | 人氣 1185 | 評價 900 | 評價/貼文 9.38 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/18 下午 01:14:26
檔案已寄出
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/12/8 下午 06:20:23
windows的中文電腦大多都有內建注音及倉頡碼,不必大費周章,只要用WinAPI應該就可以輕易的擷取注音或倉頡碼。
作者 : primonine(九兄弟)
[ 貼文 14 | 人氣 5877 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/12/10 下午 09:24:02
請教大大!
     可否提供一個小範例,如何在vfp中,用winapi擷取倉頡嗎?謝謝
作者 : andao(煙搗)
[ 貼文 1 | 人氣 2 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/12 下午 11:25:52
您好!是否可以再請您寄一份DLL檔給我呢?謝謝您!
andao.tw@yahoo.com.tw
作者 : sephar(sephar) 人氣指數超過10000點
[ 貼文 139 | 人氣 17923 | 評價 50 | 評價/貼文 0.36 | 送出評價 33 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/27 上午 11:06:31
請問一下這位大大,你有找到某個dll檔可以把文字轉換出倉頡碼的嗎
小弟不材,也剛好需要這程式
有的話,可以寄給小弟嗎,謝謝
小弟的e-mail:
loki77m@yahoo.com.tw
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/29 上午 01:13:58
用Win API可以輕易擷取倉頡或注音碼,我最近寫了一個簡單的函數,過兩天有空我貼上來
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/6/1 上午 09:23:07
***************** 琵式範例 ****************
***** 以Win API擷取中文字的注音或倉頡碼 *****
LOCAL lcChineseWord, lnRetValue
#DEFINE phon_code 0 && 注音
#DEFINE chajei_code 1 && 倉頡
**************************
CLEAR
*********************************
lcChineseWord = "的"
?" 【" + lcChineseWord + "】的倉頡碼為:"
??RetrieveCode(lcChineseWord,chajei_code)
**********
?" 【" + lcChineseWord + "】的注音碼為:"
??RetrieveCode(lcChineseWord) && 有三個注音碼
*********************************
lcChineseWord = "嚴"
?" 【" + lcChineseWord + "】的倉頡碼為:"
??RetrieveCode(lcChineseWord, chajei_code)
**********
?" 【" + lcChineseWord + "】的注音碼為:"
??RetrieveCode(lcChineseWord, phon_code)
*********************************
lcChineseWord = "。"
?" 【" + lcChineseWord + "】的倉頡碼為:"
??RetrieveCode(lcChineseWord, chajei_code)
**********
lnRetValue = RetrieveCode(lcChineseWord, phon_code)
?" 【" + lcChineseWord + "】的注音碼為:"
??IIF(EMPTY(lnRetValue), "沒有對應的注音碼",lnRetValue)
*********************************
*********************************

作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/6/1 上午 09:32:00
FUNCTION RetrieveCode(cChineseWord, nCode)
DECLARE INTEGER ImmGetConversionList IN imm32 INTEGER hKL, INTEGER hIMC, STRING lpSrc, STRING @lpDst, INTEGER dwBufLen, INTEGER uFlag
***********
LOCAL lnhIMC, lnhKL, lcSrc, lcDst, lnBufLen
LOCAL lnCount, lnOffset, lcCode, lcCode1, lnIndex, lnFieldWidth
***********
#DEFINE GCL_REVERSECONVERSION 2
#DEFINE chajei 3758228484 && 倉頡
#DEFINE phon 3758162948 && 注音
***********
nCode = IIF(TYPE(nCode) = L, 0, nCode) && 預設為注音碼
lnhKl = IIF(nCode = 0, phon, chajei) && 預設為注音碼,nCode = 0 為注音,其他數值為倉頡
lnhIMC = 0
lcSrc = ALLTRIM(cChineseWord) + CHR(0)
lcDst = REPLICATE(CHR(0),32) &&lcDst是一個structure,暫定其size為32
lnBufLen = ImmGetConversionList(lnhKL, lnhIMC, lcSrc, @lcDst, 0,GCL_REVERSECONVERSION) && 偵測 lcDst 的實際 size
IF lnBufLen = 0
RETURN ""
ENDIF
lcDst = REPLICATE(CHR(0),lnBufLen) && 再重設 lcDst 為其實際 size
=ImmGetConversionList(lnhKL, lnhIMC, lcSrc, @lcDst, lnBufLen,GCL_REVERSECONVERSION)
lnCount = string2integer(SUBSTR(lcDst, 9,4)) && 注音碼可能不止一個,擷取其數量
lnOffset = string2integer(SUBSTR(lcDst, 25,4)) + 1 && 注音/倉頡碼的起始位置
lcCode = SUBSTR(lcDst, lnOffset) && 擷取注音/倉頡碼的豹列字串,若有一個注音/倉頡碼以上,則以 NULL 為分隔
IF lnCount > 1 && 注音碼至少有一個以上,倉頡碼應該只有一個,但這裡仍視為一個以上
lcCode1 = ""
lnFieldWidth = IIF(nCode = 0, 8, 10) && 注音碼的欄位寬度為四個全形字,即8個字元,倉頡碼為五個全形字,即10個字元
FOR lnIndex = 1 TO lnCount
lcCode1 = lcCode1 + "("+ ALLTRIM(STR(lnIndex)) + ")" + SUBSTR(lcCode,(lnIndex-1)*(lnFieldWidth+1)+1,lnFieldWidth) + " "
ENDFOR
RETURN lcCode1
ELSE
RETURN STRTRAN(lcCode,CHR(0),"")
ENDIF
ENDFUNC
********
FUNCTION String2Integer(cStr)
   LOCAL lnNo, lnIndex
   lnNo = 0
   FOR lnIndex = 1 TO 4
lnNo = lnNo + ASC(SUBSTR(cStr,lnIndex,1)) * 256^(lnIndex-1)
   ENDFOR
   RETURN lnNo
ENDFUNC
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/6/3 下午 09:28:17
很抱歉!上面的程式碼是copy過去的,發生了少許錯誤,茲訂正如下:
(1) nCode = IIF(TYPE(nCode) = L, 0, nCode) ===> 改為
     nCode = IIF(TYPE(nCode) = L, 0, nCode)
(2)豹列字串===>改為
     『陣』列字串
(3)琵式範例 ==> 『程』式範例
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/6/3 下午 09:30:26
還是錯誤!
(1) nCode = IIF(TYPE(nCode) = L, 0, nCode) ===> 改為
     nCode = IIF(TYPE("nCode") = "L", 0, nCode)
作者 : fss1189(fss1189)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/29 上午 10:24:28
高手即是高手. 簡而清的program, 便可擷取 輸入法中的相應代碼.
請問如果 擷取整個 倉頡輸入法 (倉頡輸入法 5.0 版)
中的所有相應代碼 到一個文字檔中, 應如何處理呢? Thanks a lot !
email : fss1189@yahoo.com
作者 : cough(Jacky)
[ 貼文 92 | 人氣 743 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/30 上午 10:03:57
利用上述兩個函數,即可輕易的建立中文倉頡對碼表,以下是『Big5中文倉頡對碼表』的範例。
*****************程式範例 ****************
***** 以WinAPI建立Big5中文倉頡對碼表 *****
LOCAL gnHandleWrite
PRIVATE lcStr, lnNum, i, j
#DEFINE chajei_code 1 && 倉頡
**************************
gnHandleWrite = FCREATE("Big5中文倉頡對碼表.txt")
**************************
lcStr = ""
lnNum = 1
*************** 1 ****************
FOR i=0xA1 TO 0xFE
FOR j=0x40 TO 0x7E
DO DataManagement
ENDFOR
FOR j=0xA1 TO 0xFE
DO DataManagement
ENDFOR
ENDFOR
*************** 2 ****************
FOR i=0x8E TO 0xA0
FOR j=0x40 TO 0x7E
DO DataManagement
ENDFOR
FOR j=0xA1 TO 0xFE
DO DataManagement
ENDFOR
ENDFOR
************** 3 *****************
FOR i=0x81 TO 0x8D
FOR j=0x40 TO 0x7E
DO DataManagement
ENDFOR
FOR j=0xA1 TO 0xFE
DO DataManagement
ENDFOR
ENDFOR
*************
= FWRITE(gnHandleWrite, lcStr) && 寫入檔案
= FCLOSE(gnHandleWrite) && 關閉檔案
*********************************
PROCEDURE DataManagement
LOCAL lcChineseWord, lcChajei
    lcChineseWord = chr(i) + chr(j)
    lcChajei = RetrieveCode(lcChineseWord,chajei_code)
    lcStr = lcStr + lcChajei + REPLICATE(CHR(32), 14 - LEN(lcChajei)) + lcChineseWord + CHR(13)+CHR(10)
    WAIT WINDOW "已處理Big5中文字數:" + TRANSFORM(lnNum, "999,999") NOWAIT
    lnNum = lnNum + 1
ENDPROC
********
FUNCTION RetrieveCode(cChineseWord, nCode)
*請參閱上述函數,不再贅述
.
.
.
ENDFUNC
********
FUNCTION String2Integer(cStr)
LOCAL lnNo, lnIndex
  lnNo = 0
  FOR lnIndex = 1 TO 4
    lnNo = lnNo + ASC(SUBSTR(cStr,lnIndex,1)) * 256^(lnIndex-1)
  ENDFOR
  RETURN lnNo
ENDFUNC
作者 : peirex(Rex Chen)
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/7/7 下午 10:35:28

>利用上述兩個函數,即可輕易的建立中文倉頡對碼表,以下是『Big5中文倉頡對碼表』的範例。
>*****************程式範例 ****************
>***** 以WinAPI建立Big5中文倉頡對碼表 *****
.....

這個範例我分別在Vista及XP下用VFP9.0測試,但均無法獲得任何有效的對照碼,請問是何原因?
作者 : slash_wu(遞迴)
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/7/18 下午 06:44:13
取字根透過 imm library 就行了.


Slash
作者 : kimkerry(juncai)
[ 貼文 4 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/5/2 上午 11:14:23
我也要,可以麻煩寄給我嗎?感激不盡!!
kimkerry@hotmail.com
 板主 : 徵求中
 > Visual Foxpro - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Foxpro - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Foxpro
1 小賴 900 
2 syntech 300 
3 jaichai 220 
4 小蜜蜂 150 
5 ruby 40 
6 superylc 40 
7 daniel 30 
8 Snaking 30 
9 Danny 30 
10 深山 30 
Visual Foxpro
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.09375