知识大全 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;    begin    case 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 ;    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 SourceStrs Count 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 TForm SearchChange(Sender: TObject);    var ResultStr:string;    begin    ResultStr:= ;    ResultList Items Text := SearchByPYIndexStr    (Sourcelist Items Search Text);    end; 

   .编译运行后

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

cha138/Article/program/Delphi/201311/24877

相关参考

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

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

知识大全 关于正则表达式

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

核骨架结合序列的基本特征和功能:

核骨架结合序列的基本特征:  ①富含AT;  ②富含DNA解旋元件;  ③富含反向重复序列  ④含有转录因子结合位点。  功能:为DNA的复制提供支架。是基因转录加工的场所有RNA聚合酶的结合位点,R

知识大全 用.NET框架实现序列化

用.NET框架实现序列化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  序列化是将一个对象保存到

知识大全 ADO.NET SQL语句检索说明

ADO.NETSQL语句检索说明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面用实例进行介

某酒厂用食用酒精兑制成白酒,使用本厂酿制的粮食白酒“幸福特曲”的包装及标贴向社会销售。该种勾兑制成的白酒理化、卫生指标符

某酒厂用食用酒精兑制成白酒,使用本厂酿制的粮食白酒“幸福特曲”的包装及标贴向社会销售。该种勾兑制成的白酒理化、卫生指标符合标准,每瓶售价仅为“幸福特曲”的1/4,销售状况甚好。对该厂的上述作法应如何定

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

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

知识大全 教你使用solr搭建你的全文检索

  Solr是一个可供企业使用的基于Lucene的开箱即用的搜索服务器对Lucene不熟?那么建议先看看下面两篇文档  实战Lucene第部分初识Lucenelolucene/  用Lucene加速W

知识大全 用Delphi制作录音程序

用Delphi制作录音程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Delphi是Inpr

知识大全 开发Delphi对象式数据管理功能(一)[3]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快