線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2736
推到 Plurk!
推到 Facebook!

能否從輸入法列出字、音對照(Unicode)?

答題得分者是:s8556026
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-08 16:14:58 IP:211.76.xxx.xxx 未訂閱
各位前輩,不知道微軟的注音輸入法可不可以找出像這樣的表格呢? 一 3 ㄧ ㄧˊ ㄧˋ 乙 1 ㄧˇ 丁 2 ㄉㄧㄥ ㄓㄥ 因為手上有的都是Big5的,需要改成含Unicode的。 謝謝各位! --- 從問中學 ^^
s8556026
一般會員


發表:10
回覆:43
積分:15
註冊:2003-07-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-23 12:10:28 IP:203.69.xxx.xxx 未訂閱
一 3 ㄧ ㄧˊ ㄧˋ 乙 1 ㄧˇ 丁 2 ㄉㄧㄥ ㄓㄥ 七 1 ㄑㄧ 乃 1 ㄋㄞˇ 九 1 ㄐㄧㄡˇ 了 2 ㄌㄜ˙ ㄌㄧㄠˇ 二 1 ㄦˋ 人 1 ㄖㄣˊ 儿 1 ㄖㄣˊ 入 1 ㄖㄨˋ 八 1 ㄅㄚ 几 2 ㄐㄧ ㄐㄧˇ 刀 1 ㄉㄠ 刁 1 ㄉㄧㄠ 力 1 ㄌㄧˋ 匕 1 ㄅㄧˇ 十 1 ㄕˊ 卜 1 ㄅㄨˇ 又 1 ㄧㄡˋ 三 1 ㄙㄢ 下 1 ㄒㄧㄚˋ 丈 1 ㄓㄤˋ 上 2 ㄕㄤˇ ㄕㄤˋ 丫 1 ㄧㄚ 丸 1 ㄨㄢˊ 凡 1 ㄈㄢˊ 久 1 ㄐㄧㄡˇ 么 1 ㄧㄠ 也 1 ㄧㄝˇ 乞 1 ㄑㄧˇ 于 1 ㄩˊ 亡 2 ㄨˊ ㄨㄤˊ 兀 1 ㄨˋ 刃 1 ㄖㄣˋ 勺 2 ㄕㄠˊ ㄕㄨㄛˋ 千 1 ㄑㄧㄢ 叉 1 ㄔㄚ 口 1 ㄎㄡˇ 土 1 ㄊㄨˇ 士 1 ㄕˋ 夕 1 ㄒㄧˋ 大 2 ㄉㄚˋ ㄉㄞˋ 我忘了哪抓的…有程式…EMAIL 給你…我不會上傳…要麻煩你了
s8556026
一般會員


發表:10
回覆:43
積分:15
註冊:2003-07-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-23 12:16:39 IP:203.69.xxx.xxx 未訂閱
Sorry 那是倚天的…不是MS的… 我想你早就有了 或許可以將此表轉成涵 Unicode 的表格 直接用 UltraEdit 開 轉成 Unicode 複製所要的 Unicode 再貼回去… 或是用程式轉… @@ 我的 UltraEdit 會自動轉碼 貼Unicode 自己轉成 BIG5 參考網頁… http://home.att.net/~jameskass/ http://www.cl.cam.ac.uk/~mgk25/unicode.html#unicode 有了有了… dwGCL = ImmGetConversionList(hkb, 0, bChinaWord, dwBuff(0), _ dwGCL, GCL_REVERSECONVERSION) icount = dwBuff(8) '取得一共多少種字根組合,如"的"就有三種 If dwGCL > 0 Then If nth > icount Then '沒有nth個的candidate http://www.hosp.ncku.edu.tw/~cww/html/q00456.html 發表人 - s8556026 於 2004/02/23 15:31:28
s8556026
一般會員


發表:10
回覆:43
積分:15
註冊:2003-07-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-23 16:40:07 IP:203.69.xxx.xxx 未訂閱
修改錢大師的 code function QueryCompStr(hKB: HKL; const sChinese: AnsiString): string; var dwGCL: DWORD; szBuffer: array[0..254] of char; iMaxKey, iStart, i: integer; icount, isel:integer; TMP:STRING; begin Result := ''; iMaxKey := ImmEscape(hKB, 0, IME_ESC_MAX_KEY, nil); if iMaxKey <= 0 then exit; // 看看這個輸入法是否支援 Reverse Conversion 功能 // 同時, 偵測需要多大的空間容納取得的資訊 // comment: 下次修改時可以改成動態配置記憶體的方式 dwGCL := ImmGetConversionList( hKB, 0, pchar(sChinese), nil, 0, GCL_REVERSECONVERSION); if dwGCL <= 0 then Exit; // 該輸入法不支援 Reverse Conversion 功能 // 取得組字字根資訊, dwGCL 的值必須以上次呼叫 ImmGetConversionList // 傳回值代入 dwGCL := ImmGetConversionList( hKB, 0, pchar(sChinese), @szBuffer, dwGCL, GCL_REVERSECONVERSION); icount:=byte( szbuffer[8]); if dwGCL > 0 then begin // 為什麼是 24? { TCandidateList = record dwSize: DWORD; dwStyle: DWORD; dwCount: DWORD; dwSelection: DWORD; dwPageStart: DWORD; dwPageSize: DWORD; 24-th byte dwOffset: array[1..1] of DWORD; end; } for isel :=0 to icount -1 do begin iStart := byte(szBuffer[24 (isel )*4 ] ); for i := iStart to iStart iMaxKey * 2-1 do begin AppendStr(Result, szBuffer[i]); AppendStr(Result,';'); end; end;//for end; end;
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-29 21:51:14 IP:211.76.xxx.xxx 未訂閱
s8556026前輩: 對不起,讓你這分這麼難賺。小弟以前沒碰過API,著實消化了一段 時間。再請問您一個關鍵問題,function QueryCompStr傳回了這個值,我 還是看不懂這個值是什麼。可以再給我說明一下嗎?那是不是我把這個值 丟給memo之類的東西就行了?再次謝謝你! --- 從問中學 ^^
s8556026
一般會員


發表:10
回覆:43
積分:15
註冊:2003-07-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-02 23:28:39 IP:61.231.xxx.xxx 未訂閱
引言: s8556026前輩: 對不起,讓你這分這麼難賺。小弟以前沒碰過API,著實消化了一段 時間。再請問您一個關鍵問題,function QueryCompStr傳回了這個值,我 還是看不懂這個值是什麼。可以再給我說明一下嗎?那是不是我把這個值 丟給memo之類的東西就行了?再次謝謝你! --- 從問中學 ^^
給人叫前輩…怪怪的… 這是使用的例子 因為最近要做的事差不多 才會特別的研究 用 "的" 去試有 3 種拼法 用 "一" 去試只有 1 種拼法-不像倚天有三種 算是互相幫忙吧 var iHandleCount: integer; pList: array[1..nHKL_LIST] of HKL; szImeName: array[0..254] of char; i: integer; sFound: string; begin lstComposition.Items.Clear; // 取得目前系統已安裝輸入法之各個鍵盤配置(Keyboard Layout) iHandleCount := GetKeyboardLayoutList(nHKL_LIST, pList); for i := 1 to iHandleCount do begin if ImmEscape(pList[i], 0, IME_ESC_IME_NAME, @szImeName) > 0 then ^^^^pList 應該是 chajei.ime 等… begin sFound := QueryCompStr(pList[i], edtExam.Text); if sFound <> '' then lstComposition.Items.Add(StrPas(szImeName) ': ' sFound); end; end; http://www.microsoft.com/globaldev/reference/WinCP.mspx 微軟的 globaldev
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-14 23:02:56 IP:211.76.xxx.xxx 未訂閱
s8556026前輩: 最近想了很久,搞不好還不用那麼麻煩。如果只是要Unicode版的拼音對照表,是不是可以拿錢達智前輩的範例,選擇所需要的輸入法,再將漢字這個區段的Unicode字丟進去再輸出就行了呢?那我怎麼從plist[i]知道輸入法的名稱? --- 從問中學 ^^
s8556026
一般會員


發表:10
回覆:43
積分:15
註冊:2003-07-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-15 19:27:39 IP:61.222.xxx.xxx 未訂閱
引言: s8556026前輩: 最近想了很久,搞不好還不用那麼麻煩。如果只是要Unicode版的拼音對照表,是不是可以拿錢達智前輩的範例,選擇所需要的輸入法,再將漢字這個區段的Unicode字丟進去再輸出就行了呢?那我怎麼從plist[i]知道輸入法的名稱? --- 從問中學 ^^
HI~ 不要再叫我前輩囉 當然啦…我是用他的程式改來的… 輸入法的名稱...他的程式裡也有喔 Valid hi bytes is 0xA1 ~ 0xFE Valid low bytes is 0x40 ~ 0x7E, 0xA1 ~ 0xFE 幾乎可以輸出所有的常用字 參考… http://www.microsoft.com/globaldev/reference/WinCP.mspx
chris
一般會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-17 12:15:20 IP:202.175.xxx.xxx 未訂閱
請教一下: 我根據你的程式,卻出現以下結果: 行列: ???????@;?@; 請問是為何?
chris
一般會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-17 15:40:13 IP:202.175.xxx.xxx 未訂閱
問題解決了,改成 AppendStr(Result, inttostr(byte(szBuffer[i]))); 即可... thx啦
系統時間:2017-10-19 15:23:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!