其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2020年07月24日
 
Delphi用拼音首字符序列实现检索功能

在日常工作和生活中我们经常使用电子记事本查找个人通讯录信息或在单位的应用程序中查询客户档案或业务资料这个过程中往往需要输入大量的汉字信息对于熟悉计算机的人这已经是一件头疼的事那些不太熟悉计算机或根本不懂汉字输入的用户简直就望而生畏作为对数据检索技术的一种新的尝试作者探索使用汉字拼音的首字符序列作为检索关键字这样用户不必使用汉字只须简单地键入要查询信息的每个汉字的拼音首字符即可比如你想查找关键字中国人民银行你只需要输入zgrmyh作者希望通过下面的例子为广大计算机同行起一个抛砖引玉的作用让我们开发的程序更加便捷好用

原理很简单找出汉字表中拼音首字符分别为AZ的汉字内码范围这样对于要检索的汉字只需要检查它的内码位于哪一个首字符的范围内就可以判断出它的拼音首字符

程序更简单包括个控件一个列表存放着所有待检索的信息一个列表用于存放检索后的信息一个编辑框用于输入检索关键字(即拼音首字符序列)详细如下

.进入Delphi创建一个新工程Project

.在Form上创建以下控件并填写属性

控件类型 属性名称 属性值

Edit Name Search

ListBox Name SourceList

Items 输入一些字符串如姓名等用于提供检索数据

ListBox Name ResultList

.键入以下两个函数

// 获取指定汉字的拼音索引字母的索引字母是H

function GetPYIndexChar( hzchar:string):char;

begin

case WORD(hzchar[]) shl + WORD(hzchar[]) of

$BA$BC : result := A;

$BC$BC : result := B;

$BC$BED : result := C;

$BEE$BE : result := D;

$BEA$BA : result := E;

$BA$BC : result := F;

$BC$BFD : result := G;

$BFE$BBF : result := H;

$BBF$BFA : result := J;

$BFA$CAB : result := K;

$CAC$CE : result := L;

$CE$CC : result := M;

$CC$CB : result := N;

$CB$CBD : result := O;

$CBE$CD : result := P;

$CDA$CBA : result := Q;

$CBB$CF : result := R;

$CF$CBF : result := S;

$CBFA$CDD : result := T;

$CDDA$CEF : result := W;

$CEF$D : result := X;

$DB$DD : result := Y;

$DD$DF : result := Z;

else

result := char();

end;

end;

// 在指定的字符串列表SourceStrs中检索符合拼音索引字符串

PYIndexStr的所有字符串并返回

function SearchByPYIndexStr

( SourceStrs:TStrings;

PYIndexStr:string):string;

label NotFound;

var

i j :integer;

hzchar :string;

begin

for i:= to SourceStrsCount do

begin

for j:= to Length(PYIndexStr) do

begin

hzchar:=SourceStrs[i][*j]

+ SourceStrs[i][*j];

if (PYIndexStr[j]<>?) and

(UpperCase(PYIndexStr[j]) <>

GetPYIndexChar(hzchar)) then goto NotFound;

end;

if result= then result := SourceStrs[i]

else result := result + Char

() + SourceStrs[i];

NotFound:

end;

end;

.增加编辑框Search的OnChange事件

procedure TFormSearchChange(Sender: TObject);

var ResultStr:string;

begin

ResultStr:=;

ResultListItemsText := SearchByPYIndexStr

(SourcelistItems SearchText);

end;

.编译运行后

在编辑框Search中输入要查询字符串的拼音首字符序列检索结果列表ResultList就会列出检索到的信息检索中还支持通配符对于难以确定的的文字使用替代位置可以实现更复杂的检索

本程序在Delphi中编译运行通过

               

上一篇:Delphi开发经验技巧:可入文ADD下拉列表

下一篇:用Delphi实现BP机、手机短讯 精华篇[2]