实现汉字拼音码首字母查询的方法大致有如下几种:1、根据汉字内码码查询,2、根据微软拼音输入法查询,3、自建拼音码数据库。本文仅简单列出第一种方式的源码(其中主要源码来自网上,仅为了做成动态库供其它语言调用略作修改,在此对作者表示感谢!)。
//文件名:Py.dpr 将所有内容复制到记事本里,然后另存为Py.dpr,用delphi打开编译即可得到py.dll文件
library Py;
// 用于查询汉字拼音码首字母的动态库 大漠 2005.11
//开发工具:delphi7
uses
SysUtils,
Classes;
{$R *.res}
Function GetPy(HzChar:Pchar):char;export;stdcall //返回汉字的首拼音
var
HzSS: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