Delphi用拼音首字符序列实现检索功能

Delphi用拼音首字符序列实现检索功能,第1张

Delphi用拼音首字符序列实现检索功能,第2张

在我们的日常工作和生活中,经常会使用电子记事本查找个人通讯录信息,或者在公司的应用中查询客户档案或业务信息。在这个过程中,我们往往需要输入大量的汉字,这对于熟悉电脑的人来说已经是一件很头疼的事情了。不熟悉电脑或者根本不认识汉字的,简直让人望而生畏。作为数据检索技术的一种新尝试,作者探索使用汉字拼音的首字序列作为检索关键字,使用户不需要使用汉字,只需键入每个汉字的首字即可查询信息。比如你想搜索关键词“中国人民银行”,只需要输入“zgrmyh”即可。笔者希望通过下面的例子,对广大计算机同行起到抛砖引玉的作用,让我们开发的程序更加方便易用。
原理很简单。在汉字表中找出拼音首字母为“A”到“Z”的汉字的内码范围。这样,对于要检索的汉字,只需查看其内码的范围就可以判断其拼音首字母。

程序更简单,包括三个控件:一个包含所有要检索的信息的列表;列表用于存储检索到的信息;编辑框用于输入搜索关键字(即拼音首字母的顺序)。详情如下:

1.进入Delphi创建一个新项目:Project1

2.在Form1上创建以下控件,并填写属性:

类型属性名称属性值
编辑名称搜索
列表框名称源列表
项目输入一些字符串,如名称,以提供检索数据
列表框名称结果列表


3。键入以下两个函数

//获取指定汉字的拼音索引字母,例如“汉”的索引字母为“h”
函数getpyindexchar(hzchar:string):char;
begin
case WORD(Hz char[1])SHL 8+WORD(Hz char[2])of
$ b0a 1..$ b0c 4:result:= ' A ';
$B0C5..$ B2C 0:result:= ' B ';
$B2C1..$ B4ED:result:= ' C ';
$B4EE..$B6E9:结果:= ' D
$B6EA..$B7A1:结果:= ' E
$B7A2..$ b8c 0:result:= ' F ';
$B8C1..$ B9FD:result:= ' G ';
$B9FE..$ bb F6:result:= ' H ';
$BBF7..$ BF a5:result:= ' J ';
$BFA6..$ C0AB:result:= ' K ';
$C0AC..$ c2e 7:result:= ' L ';
$C2E8..$ C4 C2:result:= ' M ';
$C4C3..$ C5 b5:result:= ' N ';
$C5B6..$ C5BD:result:= ' O ';
$C5BE..$ c6d 9:result:= ' P ';
$C6DA..$ C8BA:result:= ' Q ';
$C8BB..$ c8f 5:result:= ' R ';
$C8F6..$CBF9:结果:= ' S
$CBFA..$ cdd 9:result:= ' T ';
$CDDA..$ ce F3:result:= ' W ';
$CEF4..$D188:结果:= ' X
$D1B9..$ d4d 0:result:= ' Y ';
$D4D1..$D7F9:结果:= ' Z
else
result:= char(0);
end;
end;
//在指定的字符串列表SourceStrs中检索所有匹配拼音索引字符串
PYIndexStr的字符串并返回。
函数searchbypyindextr
(source strs:TStrings;
PYIndexStr:string):string;
找不到标签;
var
i,j:整数;
Hz char:string;
begin
for I:= 0 to sources strs。count-1 do
begin
for j:= 1 to Length(PYIndexStr)do
begin
Hz char:= sources tr[I][2 * j-1]
+sources tr[I][2 * j];
if (PYIndexStr[j]'?')和
(大写(PYIndexStr[j])
GetPYIndexChar(Hz char))然后goto NotFound
end;
if result = ' ' then result:= source strs[I]
else result:= result+Char
(13)+source strs[I];
未找到:
end;
end;


4。添加编辑框搜索的OnChange事件:

程序TForm1。SearchChange(发件人:to object);
var ResultStr:string;
begin
ResultStr:= ' ';
结果列表。items . Text:= searchbypyindextr
(source list。项目,搜索。正文);
end;


5。编译和运行后

在编辑框搜索中输入要查询的字符串的拼音首字母顺序,检索到的信息将列在搜索结果列表中,并加上“?”也支持搜索。通配符,使用“?”对于难以确定的单词。位置,可以实现更复杂的检索。

该程序在Delphi4.0中编译运行。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi用拼音首字符序列实现检索功能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情