说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中用拼音首字符序列来实现检索功能。

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中用拼音首字符序列来实现检索功能。

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

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

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

---- 1.进入Delphi创建一个新工程:Project1

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

控件类型 属性名称 属性值

Edit Name Search

ListBox Name SourceList

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

ListBox Name ResultList

3.键入以下两个函数

// 获取指定汉字的拼音索引字母,如:“汉”的索引字母是“H”

function GetPYIndexChar( hzchar:string):char;

begin

case WORD(hzchar[1]) shl 8 + WORD(hzchar[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';

$B8C1..$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';

$D1B9..$D4D0 : result := 'Y';

$D4D1..$D7F9 : result := 'Z';

else

result := char(0);

end;

end;

// 在指定的字符串列表SourceStrs中检索符合拼音索引字符串PYIndexStr的所有字符串,并返回。

function SearchByPYIndexStr( SourceStrs:TStrings; PYIndexStr:string):string;

label NotFound;

var

i

j :integer;

hzchar :string;

begin

for i:=0 to SourceStrs.Count-1 do

begin

for j:=1 to Length(PYIndexStr) do

begin

hzchar:=SourceStrs[i][2*j-1] + SourceStrs[i][2*j];

if (PYIndexStr[j]<>'?') and

(UpperCase(PYIndexStr[j]) <> GetPYIndexChar(hzchar)) then

goto NotFound;

end;

if result='' then

result := SourceStrs[i]

else

result := result + Char(13) + SourceStrs[i];

NotFound:

end;

end;

4.增加编辑框Search的OnChange事件:

procedure TForm1.SearchChange(Sender: TObject);

var

ResultStr:string;

begin

ResultStr:='';

ResultList.Items.Text := SearchByPYIndexStr(Sourcelist.Items

Search.Text);

end;

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

---- 本程序在Delphi4.0中编译运行通过。

《近匠》云适配CEO陈本峰:跨屏移动,曲线一样救国 Intel陈荣坤:赢取移动市场的几个先决条件 而立之年,开发者在害怕什么? 首席工程师揭秘:LinkedIn大数据后台是如何运作的 年交易额1800亿美元,揭秘PayPal成功背后的三大热门技术 微软妥协Android?向该平台推开源Office 365 SDK 中国云计算大会PPT集萃(一):众多名家分享技术挑战与行业趋势 速度是现在的10000倍,出自物理学家之手的新型电脑 逗你玩?淘宝开放平台从4月1起开始全面收费 出现编程疲劳?千万别纠结 “编程竞赛界王子”教你更好的招聘程序员 SA:三星全球智能电视市场份额达26% Cocos2d-x 3.0分语言包发布 最新进展即将披露 友盟:社会化分享成为APP开发“标准配置” 从“简单”的封面设计剖析Netflix背后的数据哲学 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉 让超级计算机和数据中心“飞”,Intel推800Gbps神器MXC 【OSTC讲师专访】Debian开发者李道兵:平静地理解开源 红帽推出开源业务流程管理套件:JBoss BPM Suite 6 科学研究证明:程序员快乐才能更好的工作 ChocolateChip-UI:能“逆转”的跨平台应用开发框架 分享12款最佳的Bootstrap设计工具 Apache Flex 4.12发布,支持iOS 7 智能手机应用挑战Web平台,看W3C如何反击? 电信级数据流量与监控系统部署案例分享 TCL联手Mozilla,HTML5智能电视真的要来了! 先睹为快:Unity亚洲开发者大会虚拟游览展示 OSTC&#183;2014 演讲日程出炉,Perl创始人来了! Unity将收购Applifier,并引入Everyplay和GameAds两大平台 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业 九头蛇与大象之争,Hydra或将取代Hadoop 100:如何破解Internet选像里面的“分级审查“密码 有何用php连接sql server 7.0数据库?在线!! 通过什么软件可以用sock代理上网,只要能用http、ftp下载文件就行 请问Listbox的valueMember数据类型是什么啊 怎样把EXCEL的数据转换成固定格式的WORD文档,急 问高手:可不可以修改DataGrid自动生成的编辑列在WEB页面的Name属性? 在VB中如何得到局域网的域名及登录的用户名等资料? asp.net中类似于asp中focus的语句如何表达 怎样使DataGrid在显示数据的时候实现滚动条? 关于rs.addnew 如何获得id的值,id为自动编号 简单问题,求教:Oracle 8.0.5中ParamByName的问题? 小小问题,如何拷贝sql server一张相同结构的表? 我想咨询一下在VB中不同的后缀代表的是什么功能? 小妹请教各位大虾,apache做应用服务器,unix下,怎样连接oracle数据库? 老天啊,这是为什么??????别了,我的世界杯,别了,巴蒂斯图塔,别了,阿根廷....... 更新数据库问题,100分回报? EXCEL里的时间问题!!谢~ 在word2000里怎样输入数学公式啊 重载[][],请各位帮忙。 我准备参加程序员考试 法国,阿根廷,我的心在滴血。:( :( 为阿根廷哭的人太多了(我的同事,同学等等)。。。是不是央视的沈冰也当场哭了? 寻dialogic代理商合作,急 分页程序中如何加书签,用rs.bookmark最好!!! 听说VB.net的编译器使用C#做的,是吗? 计算机英语在程序员考试中占多大比例? 令人失望的世界杯,放分!!!!!!!!! 怎样获得Mp3的歌曲信息 如何在ACCESS数据库中引用自身数据库? 阿根廷,别为我哭泣! 线程的同步问题(在线等待100) 请问如何在bcb中引用delphi的*.pas文件?(如果可以的话) 如何将CRichEditCtrl的内容输出到打印机? 关于jcreator编译时的问题 在xslt中如何判断一个结点在xml中出现的次数? 请邦邦忙--数据库不能启动了 请问..... 两个存储过程问题,帮我答了,重分酬谢 如何捕获键盘事件 讨论EAS,留步,您请进! 开发自己的组件库! 如何调用.chm帮助文件?? jbuilder6的经典书籍哪里有? 在seek(0,2)中,0,2表示什么意思,整个函数又是什么意思。 WebForm2中如果要引用WebForm1中的变量X(属性),怎么办?X在form1中怎样定义?在form2中怎样引用? 关于汇编语言? 用TC如何在开发OpenGL? 机工出的影印版让人失望!!! 我想问一个关于注册表的问题 如何在ASP中显式的声明一个变量,和dim xxx as xxx一样吗? 对图片处理,请问哪里有抓热点的工具Hospot4.exe下载 用弹簧测量一星体重力加速度,劲度系数大好还是小好? 缩手反射的反射弧中,神经冲动传递顺序是什么 GB/T 2828.1-2003的IL是什么意思 为什么神经纤维直径越粗,其传导兴奋的速度就越快?希望有针对性的讲解原因,而不是摆出一大堆原理……谢谢~ 请问怎么用双缩脲法,设计一个测定蛋白质含量的定量方法(标准线法除外) GB/T 2828.1-2003特殊检验水平S-3 这个具体的抽样计划表是什么? 准确测量蛋白质含量的方法? 完成缩手反射的一个反射需要几个神经结构的参与 用凯氏定氮法测蛋白质第一步消化,无论消化多长时间都呈牛黄色是什么原因.我加了10ml水解液 0.2g硫酸铜 2g硫酸钾 20ml硫酸 若在离肌肉5mm和50mm的神经纤维上分别给电刺激 肌肉分别在3.5ms 5.0ms后收缩 则兴奋在神经纤维上传导速度为?我知道答案是30 也知道是长度差/时间差可是为什么是长度差/时间差啊球解 两颗球形行星A和B各有一颗卫星a和b,卫星的圆形轨道接近各自行星的表面,如果两颗行星的质量之比为MA/MB=p,半径之比为RA/RB=q.则两颗卫星的周期之比为Ta/Tb=? 关于凯氏定氮 消化的时候用不用加冷凝管 生成的硫酸铵 会不会随着酸雾溢出来 我刚来百度 没有积分 CAS号,求其中文名称,1.cas 874-35-11H-indene,2,3-dihydro-5-methyl2.1595-16-0benzene,1-methyl-4-(1-methylpropyl)-3.7225-67-4heptane,2,2,3,3,5,6,6-heptamethyl4.6682-71-91H-indene,2,3-dihydro-4,7-dimethyl-5.3891-98-3dodecane,2,6,10-trimethyl-6.1010 两个球形行星A和B各有一颗靠近表面的行星a和b,若这两个行星的周期之比Ta:Tb=p,半径之比为Ra:Rb=q,则此两个行星的质量之比为Ma:Mb为? 凯氏定氮为什么要进行消化? bb是什么意思.往那方面想你懂的. 等差数列{an}共有2n+1 项.S奇=319,S偶=290,则a+1=?过程和结果等差数列{an}共有2n+1 项.S奇=319,S偶=290,则an+1=? 不好意思`打错了 (2007 甘肃兰州)在现代生活中,人们越来越注重微量元素的摄取.碘元素对人体健康有至关重要的作用.下表 标准类前面是BB/T,类似GB/T的 某一行星有两颗卫星a b 轨道半径ra rb 已测出a运行速度va 摩擦起电电荷摩擦起电 比如塑料棒吸小纸片 塑料棒带什么电荷 小纸片带什么电荷 二极管的导电特性是怎样的?使用时应注意什么问题? 高中物理两行星A和B各有一颗卫星a和b卫星的圆轨道接近各自行星表面两行星A和B各有一颗卫星a和b,卫星的圆轨道接近各自行星表面,如果两行星质量之比MA:MB=2:1,两行星半径之比RA:RB=1:2,则两个 为什么在做化学实验时长颈漏斗要没入集气瓶的液体中? BB是什么意思 为什么行星和卫星都是以球形存在的? 干冰晶体结构每个CO2分子周围离该分子最近且距离相等的CO2分子有12个 发光二极管具有____导电特性,它的主要材料是什么? 塑性材料拉伸曲线中A'是什么 我们车间要将两条铜管焊在一起,用的是紫铜焊条,但是焊接完了总是很快在焊接处出现裂缝.是异型铜管,D型,也就是一边直,一边弧.规格是88*50,壁厚直边9,弯边7. 有人对我说,把你的bb发过来. 什么是塑性滑移 高二电学-电容;如图所示,平行板电容器经开关S与电池连接,a处有一电荷量非常小的点电荷,S是闭合的如图所示,平行板电容器经开关S与电池连接,a处有一电荷量非常小的点电荷,S是闭合的,φa 电工电子技术基础的二极管的单向导电特性 塑性材料在拉伸过程中有四个阶段:弹性阶段,倔服阶段,强化阶段,缩颈断裂阶段,那么脆性材料在拉伸过...塑性材料在拉伸过程中有四个阶段:弹性阶段,倔服阶段,强化阶段,缩颈断裂阶段,那 紫铜和紫铜焊接,用什么工艺最好?用紫铜焊条焊过以后,打磨后有和紫铜不一样的材质颜色? BB是什么意思啊? 物体到凸透镜等于2倍焦距成____,____,____,___,像到透镜的距离倒立还是正立,放大还是缩小.实像还是虚像,像与物同侧还是异侧 ,像到透镜的距离 一平面镜垂直于凸透镜的主光轴,位于凸透镜的2倍焦距处,在平面镜和凸透镜之间有一发光棒,当发光棒来回 移动的过程中,处于某一位置时,整个系统成像的情况中不可能出现的是( ) A.一个 二极管的单向导电特性是指什么 实验中即能做反应器,又能直接加热的仪器是什么a.试管b.集气瓶c.烧杯d.水槽 5.如图2所示,一平面镜垂直于凸透镜的主光轴,位于凸透镜的2倍焦距处,在平面镜和凸透镜之间有一发光棒,当发光棒来回移动的过程中,处于某一位置时,整个系统成像的情况中不可能出现的是( 二极管单向导电特性的实验电路图 暑假最有意义的事10篇,山东平阴的 电场的强度是描写电场的什么的性质的物理量 神经传导和化学突触传导的区别!要详细解答的还有更详细的么? 怎么用双缩脲法测定蛋白质 暑假能做什么有意义的事?知道的请说, 凯氏定氮实验中,是通过测定什么测算出样品中粗蛋白的含量. 在缩手反射中,兴奋在神经纤维上的传导都是双向的.在突触的传递都是单向的.为什么错了 各位推荐些有意思的事, 无缝钢管的拉拔延伸系数如何计算? 双缩脲法测定蛋白质含量的干扰因素有哪些 暑假有意义的事暑假快到了,想做点有意义的事.不要作文,随便说两句就行. 什么是齿轮滑动系数 缩手反射中,兴奋在神经纤维上的传导都是双向的,在突触处的传递都是单向的吗 暑假一件有意义的事快! 热损系数大好还是小好呢? 双缩脲法测血清蛋白质含量实验的干扰因素 GB/T 2828-2003 计数抽样检验程序 有英文版本吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘