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

在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中编译运行通过。

VB6编程中如何获取硬盘分区信息 VB的坐标系统综述 VB调用C程序动态链接库的方法 VB对低层硬件的访问控制 VB软件开发中的错误捕获及处理技术 VB中Combo的一种输入检查制约方法的实现 VB中Winsock控制的UDP协议的使用 VB中的时间处理问题 Windows操作平台下CGI的实现 -VB资料 按下某组键(HotKey)便执行某程式-VB资料 把所有的字体名称放到 ComboBox -VB资料 把文件置入到Text或RichText中-VB资料 捕捉 MouseExit 事件 -VB资料 操作过程动态显示 -VB资料 查找月份的最后一天-VB资料 程序启动时,如何自动判断 MDB文件是否损坏并自动修复?-VB资料 读取和修改Windows注册表 -VB资料 对VB的IDE环境的扩展 防止文本控件中的部分滚动-VB资料 关闭正在运行的程序 -VB资料 关机消息的拦截 -VB资料 VB获得、设置鼠标双击间隔时间 VB获取当前系统平台 记载Windows使用的时间-VB资料 加速Visual Basic For Application(VBA) 监视程序的运行情况 -VB资料 交换鼠标按钮 -VB资料 交换鼠标左右键 -VB资料 禁止使用 Alt-Tab 或 Ctrl-Alt-Del -VB资料 控制光驱门的开关 -VB资料 VB利用 窗口函数监视系统的运行情况(VB类) 有谁能给我一份简单的COM代码? 有关interface??? 昨晚,初恋情人不经意的出现在梦中,你到底离你的初恋情人有多远,撒分了 一个昨天没搞明白的问题! redhat 7.2中如何设置代理服务器 求教高手一个Java中一直困扰我的问题,急!急!急! 谁能够给我个例子实现 Dll向应用程序单向通信 Dll->EXE?50分? 请问.......... 在数据窗口拖动垂直滚动条死机。只能ctrl+alt+del结束任务。倾听你的声音。 请教各位大虾两个Sql语句 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! 如何在对话框的OnPaint()函数中得到该对话框的窗口大小? 一个看似简单却很棘手的问题,不得不请教各位。。。 哪里有将rm文件转换成avi或者mpg格式的软件? 关于ARP广播域的问题?????????????? 请问,,怎么设定mshflexgrid的属性,使其各列的宽度与数据源字段的宽度一致 请问这几个对象是否代表同一个对象? 菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分! 高分寻Authorware v6.0 注册码 在数据窗口中有“部门”和“员工”两个列,分别采用各自的下拉数据窗口显示。如何使得“部门”改变时,“员工”显示与其对应的人员而不是“员工”表中所有人员。 怎样安装UNIX? 灌水加求救…… T-SQL中SELECT句中可不可以有存储过程。。。。。。。。这样为什么不行呢?(100分酬谢) MS SQL SERVER 有谁知道型号为CDU111-NE 的SONY光驱是多少速的吗? 谁对RTTTL格式文件了解,怎么把它转换成可以发送的二进制格式? 关于ORACLE存贮过程的迷惑,请各位大侠解惑! 请问如何向ActiveX控件发送一个自定义数据结构的指针 有没有好一点的ASP上传组件?? asp调用dll失败!!! 为何用了2个以上的单元有调用窗体就出现 access violat at address XXXXX in module的错误 请问有没有一些用来专门用作软件测试的测试软件? EPSONSTYLUS C20SX 型号的打印机支持NT4吗? 请问哪里有linux操作系统的源代码下载?谢谢 哪几种服务器支持global.jsa 关于数据绑定控件的问题。 关于TIFF文件的处理 DLL动态调用的问题,应注意些什么? 有关错误提示问题的文件存放在哪里呀 电瓶车的电池和气车的电池一样吗可以加汽车电瓶水吗如果可以是加原液还是加补充液呢谢谢谢 地震是地壳岩石在什么情况下所引起的震动现象 【高一地理】读地壳物质循环示意图,依据组成地壳的矿物和三类岩石1.读地壳物质循环示意图.依据组成地壳的矿物和三类岩石的互相转化,判断属于方框②的岩石有(大理岩 )2.据图判断下 dumpling,dessert的美式音标 地震是由于地壳岩石的地球内力作用下,发生什么或什么而引起的震动现象 汽车,电动车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液溶质质量分数为30%的稀硫酸,先用1L溶质质量汽车、电机车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液是溶质质量分数为30%的 sweet dumpling dumpling怎么读 noodle,candy,ice cream是可数名词还是不可数名词? 把50g溶质质量分数为98%的硫酸溶液稀释成20%的硫酸溶液,得到20%溶液多少克?加水多少克 Clootie dumpling 是什么东西?用英语怎么读? 为什么bread是不可数名词,而bun,noodle是可数名词 大理石地砖的厚度一般是多少? 电动车蓄电池是铅酸电瓶么? noodle是不是可数名词,为什么常用复数?承让了! we usually eat a kind of rice dumpling called yuanxiao中called为什么加ed? 电动车铅酸电瓶可以加水吗 地壳由哪些元素组成 Yuanxiao is a kind of rice _____.(dumpling)dumpling后面要加s吗 12v的电动车的电瓶(铅酸电池).1:一支光管(家里用的照明灯)是20W(电流参数无法提供)的.接在一个12v.14AH 的电动车电瓶(铅酸电瓶).请问:电瓶可以照明多长时间?我是用来照明的.最少能用5小时吗?2 地壳中所含各种元素的质量百分比居前的三位前三位``从高到低可是第三个空它给你了,是铁啊 配制1000毫升溶质质量分数为10%的稀硫酸,需要溶质质量分数为98%的浓硫酸多少毫升?同时需加入多少克水 is的i发音的音标是i还是e? 地壳中含量最多的元素是? we usually eat a kind of rice dumphing called yuanxiao. 如何分别音标/i/和/i:/在做题时如何分别的作用不是问意思啊 地壳中含量最多的元素是啥? 地砖上墙 怎么贴用地砖贴墙,请问,是不是必须用胶泥?可以在沙子水泥中掺入108胶代替吗?300mmX600mm的砖 there _(are\is) +some+不可数名词 地壳中含量最多的元素是什么 地板砖可以贴墙吗时间长会掉下来吗 There are many women teathers in our school There are some tomato noodles为什么前者两个都变复数,而后者只变一个 Mc Hot Dog _毒 歌词?有时间更好 用什么贴地板砖比较薄我家在农村是二层小楼 因为盖的比较早 所以高度比较矮 是水泥地板比较潮湿 我现在想在贴层地板砖 用什么和地面水泥层黏贴比较好 越薄越好 因为楼层比较矮 配置400g20%的硫酸溶液,需溶质质量分数为98%,密度为1.84g/cm3的浓硫酸多少毫升?需水多少毫升?如何配置?越快越好. 沿途HOT DOG怎么样 想要配置500克溶质的质量分数为19.6%的稀硫酸,需要溶质的质量分数为98%的硫酸多少? noodles是不是可数名词如题 noodles到底是可数的吗?有的说是有的说不是,到底是不是可数的? 地壳有哪些岩石组成? 实验室需要配制1mol/L的硫酸100ml,需取用98%的浓硫酸多少毫升? 面条noodle是不是可数名词 组成地壳的岩石问题1.关于岩石的成因正确的是( )A、花岗岩是由火山喷发而形成B、石英岩按成因属于岩浆岩C、页岩受挤压变质成为坚硬的板岩D、玄武岩受热变成大理岩2.沉积岩的特征 铅酸蓄电池、成都铅酸蓄电池、四川铅酸蓄电池什么牌子好?想购买铅酸蓄电池、四川成都铅酸蓄电池哪家的好,是什么牌子的,求助! 用noodle或noodles填空,并请告诉我为什么不是另一个?what do you have for breakfast?I often have bread or ( ). 可以说地壳是由岩石组成的吗那怎么理解海洋部分的呢? 请问,铅酸蓄电池 铅的占比一般有多少,生产车用电瓶,需要什么等级的铅做为材料? 水容重的单位是什么谢谢水的容重是若干吗单位是什么吗感谢 地壳位于莫霍界面之上,由岩石组成判断题,要解析岩石,吧是岩石圈! 汽车、电机车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液是溶质质量分数为30%的稀硫酸,先用1L溶质质量为98%的浓硫酸(密度为1.84g/cm3)配制该稀硫酸.问:(1)1L溶质质量分数为98%的荣 水的容重是多少?单位是什么? I want some chicken and a hot a salty rice dumpling 中文是什么粽子? noodle 可数吗 补充句子1,No.I'm not( )( )hungry 2,Here( )a hot dog ( )you.( )you rice dumpling 这个单词是"粽子"的单词么 noodle(面条)是不是不可数名词?如上述的. 英语句子改写 I want a hot dog改为一般疑问句怎么改.就a hot dog提问怎么提?、 这音标是什么? 地震是地壳岩石在 作用下,发生 而引起的震动现象.地震发生时还会释放地球内部蓄积的巨大 .特别是最后一个空 May I have a hot dog?怎么回答
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn