知识大全 在Delphi中用拼音首字符序列来实现检索功能

Posted

篇首语:时人不识凌云木,直待凌云始道高。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Delphi中用拼音首字符序列来实现检索功能相关的知识,希望对你有一定的参考价值。

在Delphi中用拼音首字符序列来实现检索功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在日常工作和生活中我们经常使用电子记事本查找个人通讯录信息 或在单位的应用程序中查询客户档案或业务资料 这个过程中往往需要输入大量的汉字信息 对于熟悉计算机的人这已经是一件头疼的事 那些不太熟悉计算机或根本不懂汉字输入的用户简直就望而生畏

  作为对数据检索技术的一种新的尝试 作者探索使用汉字拼音的首字符序列作为检索关键字 这样 用户不必使用汉字 只须简单地键入要查询信息的每个汉字的拼音首字符即可 比如你想查找关键字 中国人民银行 你只需要输入 zgrmyh 作者希望通过下面的例子 为广大计算机同行起一个抛砖引玉的作用 让我们开发的程序更加便捷 好用

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

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

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

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

  控件类型   属性名称  属性值  Edit     Name    Search  ListBox    Name    SourceList  Items     输入一些字符串 如姓名等 用于提供检索数据  ListBox    Name    ResultList   .键入以下两个函数

// 获取指定汉字的拼音索引字母 如 汉 的索引字母是 H function GetPYIndexChar( hzchar:string):char;begincase WORD(hzchar[ ]) shl + WORD(hzchar[ ]) of$B A $B C : result := A ;$B C $B C : result := B ;$B C $B ED : result := C ;$B EE $B E : result := D ;$B EA $B A : result := E ;$B A $B C : result := F ;$B C $B FD : result := G ;$B FE $BBF : result := H ;$BBF $BFA : result := J ;$BFA $C AB : result := K ;$C AC $C E : result := L ;$C E $C C : result := M ;$C C $C B : result := N ;$C B $C BD : result := O ;$C BE $C D : result := P ;$C DA $C BA : result := Q ;$C BB $C F : result := R ;$C F $CBF : result := S ;$CBFA $CDD : result := T ;$CDDA $CEF : result := W ;$CEF $D : result := X ;$D B $D D : result := Y ;$D D $D F : result := Z ;elseresult := char( );end;end;

//在指定字符串列表SourceStrs中检索符合拼音索引字符串PYIndexStr的所有字符串 并返回 function SearchByPYIndexStr( SourceStrs:TStrings;PYIndexStr:string):string;label NotFound;vari j :integer;hzchar :string;beginfor i:= to SourceStrs Count dobeginfor j:= to Length(PYIndexStr) dobeginhzchar:=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 TForm SearchChange(Sender: TObject);var ResultStr:string;beginResultStr:= ;ResultList Items Text := SearchByPYIndexStr(Sourcelist Items Search Text);end;    .编译运行后 在编辑框Search中输入要查询字符串的拼音首字符序列 检索结果列表ResultList就会列出检索到的信息 检索中还支持 ? 通配符 对于难以确定的的文字使用 ? 替代位置 可以实现更复杂的检索

cha138/Article/program/Delphi/201311/8459

相关参考

知识大全 Delphi中用API实现在MSN的信息提示

Delphi中用API实现在MSN的信息提示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我是

知识大全 Delphi中用ICMP探测远程主机是否存活

Delphi中用ICMP探测远程主机是否存活  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!网络通讯

知识大全 Delphi中用Adsi创建IIS虚拟目录

Delphi中用Adsi创建IIS虚拟目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 先引入类

知识大全 Delphi实现数据库的拼音查询

Delphi实现数据库的拼音查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  昨夜看到一篇文章

知识大全 关于正则表达式

\  将下一个字符标记为一个特殊字符或一个原义字符或一个后向引用或一个八进制转义符例如n匹配字符n\n匹配一个换行符序列\\匹配\而\(则匹配(^  匹配输入字符串的开始位置如果设置了Re

计算机中用来表示存储器空间大小的最基本单位是字节

计算机中用来表示存储器空间大小的最基本单位是字节。_____答案:正确解析:字节(Nyte)是计算机中用来表示存储空间大小最基本的容量单位,数据的存取是按字节来进行的。故本题判断正确。

知识大全 JAVA中用递归函数来删除子目录

JAVA中用递归函数来删除子目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java是一门强

知识大全 在百度提问中用匿名提问,现在想删除怎么弄

在百度提问中用匿名提问,现在想删除怎么弄?不能删?目前百度知道APP上关于个人释出的话题还没有个人删除的功能,1.可以在意见反馈中反馈,期待新功能的更新。2.管理员可以删除违规的话题。可以找管理员私信

染色体应具有的关键序列有哪些?它们在染色体的结构和功能中担当着什么样的角色?

(一)关键序列:  自主复制DNA序列(autonomouslyreplicatingsequence,ARS)  着丝粒DNA序列(centromereDNAsequence,CEN)  端粒DNA

知识大全 浅谈Java中用动态代理类实现记忆功能

浅谈Java中用动态代理类实现记忆功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记忆是衍生