實現漢字拼音碼首字母的動態庫

2021-04-02 02:51:41 字數 2105 閱讀 5137

實現漢字拼音碼首字母查詢的方法大致有如下幾種:1、根據漢字內碼碼查詢,2、根據微軟拼音輸入法查詢,3、自建拼音碼資料庫。本文僅簡單列出第一種方式的原始碼(其中主要原始碼來自網上,僅為了做成動態庫供其它語言呼叫略作修改,在此對作者表示感謝!)。

//檔名:py.dpr   將所有內容複製到記事本裡,然後另存為py.dpr,用delphi開啟編譯即可得到py.dll檔案

library py;

// 用於查詢漢字拼音碼首字母的動態庫  大漠  2005.11

//開發工具:delphi7 

uses

sysutils,

classes;

function getpy(hzchar:pchar):char;export;stdcall    //返回漢字的首拼音

varhzss:string;

begin

hzss:=string(hzchar);

case word(hzss[1])shl(8)+word(hzss[2]) of

$b0a1..$b0c4 : result:='a';

$b0c5..$b2c0 : result:='b';

$b2c1..$b4ed : result:='c';

$b4ee..$b6e9 : result:='d';

$b6ea..$b7a1 : result:='e';

$b7a2..$b8c0 : result:='f';

$b9c1..$b9fd : result:='g';

$b9fe..$bbf6 : result:='h';

$bbf7..$bfa5 : result:='j';

$bfa6..$c0ab : result:='k';

$c0ac..$c2e7 : result:='l';

$c2e8..$c4c2 : result:='m';

$c4c3..$c5b5 : result:='n';

$c5b6..$c5bd : result:='o';

$c5be..$c6d9 : result:='p';

$c6da..$c8ba : result:='q';

$c8bb..$c8f5 : result:='r';

$c8f6..$cbf9 : result:='s';

$cbfa..$cdd9 : result:='t';

$cdda..$cef3 : result:='w';

$cef4..$d188 : result:='x';

$d189..$d4d0 : result:='y';

$d4d1..$d7f9 : result:='z';

else

result:=char(0);

end;

end;

exports

getpy;

begin

end.

以下是vb呼叫示例

'新建一標準exe工程,向主窗體中加入兩個文字框,分別命名為:txthz txtpy,加入一命令按鈕,命名為:cmdtest   caption屬性設定為"測試"

option explicit

'函式宣告(除錯時應把dll路徑換成絕對路徑,編譯時應改為相對路徑)

private declare function getpy lib "py.dll" (byval shz as string) as byte

private sub cmdtest_click()

dim i as integer

dim n as integer

dim shz as string

shz = txthz.text

n = len(shz)

txtpy.text = ""

if n > 0 then

for i = 0 to n - 1

txtpy.text = txtpy.text + chr(getpy(mid(shz, i + 1, 1)))

next

end if

end sub

private sub form_load()

txthz.text = "你是風兒我是沙"

txtpy.text = ""

end sub

根據漢字的首字母生產拼音碼進行查詢

主要是在sql中實現 use xpos refer database go object userdefinedfunction dbo getletter script date 04 07 2012 09 22 25 set ansi nulls on goset quoted identifi...

根據漢字的首字母生產拼音碼進行查詢

公司裡原先的 實在沒看懂。主要是在sql中實現 use xpos refer database go object userdefinedfunction dbo getletter script date 04 07 2012 09 22 25 set ansi nulls on goset qu...

漢字轉拼音首字母

public string hz2py string hz 獲得漢字的區位碼 else if tmp 45253 tmp 45760 else if tmp 47761 tmp 46317 else if tmp 46318 tmp 46825 else if tmp 46826 tmp 47009...