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

Posted 拼音

篇首语:和谐、和谐,我会学习噶!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi实现数据库的拼音查询相关的知识,希望对你有一定的参考价值。

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

  昨夜看到一篇文章 可以用Delphi将汉字 >拼音 可是将拼音转换成汉字又该如何操作哪?我的数据库 通讯录软件缺少用拼音查找功能 结果 搞到 点还是无果!唉!

  中午找到输入拼音可以检索汉字 可是在数据库中怎样实现哪? 个小时 无果!

  今天实现:

   首先建立字库

   检索 先从数据库读出所要查询字段所有记录 将其放入控件ListBox 再按照拼音检索需要的数据

  实现是靠的迂回策略(读取数据库汉字 >转换成拼音 >依据拼音检索结果 >实现数据库的拼音检索) 没找到直接在数据库查询 然后显示结果的方法 希望高人指点一二

  下面附上Code:

   字库Code:

  //汉字拼音码检索 对应的拼音字母function GetCharInd(zzchar:string):char;begincase WORD(zzchar[ ]) shl +WORD(zzchar[ ]) 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:=# ;end;end;

   查询实现部分:汉字拼音码的检索function DisByStrInd(ListBoxStr:TListBox;StrInd:string):string;label NotFound;varzzchar :string;i j:integer;beginfor i:= to ListBoxStr Items Count dobeginfor j:= to Length(StrInd) dobeginzzchar:=ListBoxStr Items[i][ *j ]+ListBoxStr Items[i][ *j];if (StrInd[j]<> ? ) and (UpperCase(StrInd[j])<>GetCharInd(zzchar))then goto NotFound;end;if result= then result:=ListBoxStr Items[i]else result:=result+# +ListBoxStr Items[i];NotFound:end;end;

  以下是Delphi 中 Unit单元 的完整代码:

  ******************************************************************** * 名称: SelectByPinYin 单元 * 功能:本单元为此数据库程序的 通过汉字拼音查询 单元 * 软件环境:Win +Delphi +AccessXp * 作者:Domain * E mail:* 制作日期: ********************************************************************

  unit SelectByPinYin;

  interface

  usesWindows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs NEOFORM ComCtrls MenuBar ToolWin ExtCtrls StdCtrls DBCtrls Buttons;

  typeTSelectPY = class(TEDairyForm)Panel : TPanel;Panel : TPanel;Panel : TPanel;Panel : TPanel;ListBox : TListBox;Edit : TEdit;Label : TLabel;Label : TLabel;BitBtn : TBitBtn;BitBtn : TBitBtn;ListBox : TListBox;Label : TLabel;procedure FormCreate(Sender: TObject);procedure Edit Change(Sender: TObject);procedure ListBox Click(Sender: TObject);procedure ListBox Click(Sender: TObject);private Private declarations public Public declarations end;

  varSelectPY: TSelectPY;getName:String;函数在这里定义function GetCharInd(zzchar:string):char;//汉字拼音码function DisByStrInd(ListBoxStr:TListBox;StrInd:string):string;

  implementation

  uses DataMain;

  $R * dfm

  //汉字拼音码检索 对应的拼音字母function GetCharInd(zzchar:string):char;begincase WORD(zzchar[ ]) shl +WORD(zzchar[ ]) 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:=# ;end;end;

  汉字拼音码的检索function DisByStrInd(ListBoxStr:TListBox;StrInd:string):string;label NotFound;varzzchar :string;i j:integer;beginfor i:= to ListBoxStr Items Count dobeginfor j:= to Length(StrInd) dobeginzzchar:=ListBoxStr Items[i][ *j ]+ListBoxStr Items[i][ *j];if (StrInd[j]<> ? ) and (UpperCase(StrInd[j])<>GetCharInd(zzchar))then goto NotFound;end;if result= then result:=ListBoxStr Items[i]else result:=result+# +ListBoxStr Items[i];NotFound:end;end;

  在 FormCreate 中 将联系人 姓名 加入 ListBox procedure TSelectPY FormCreate(Sender: TObject);vari:integer;begininherited;with adodm PersonName dobeginlistBox Clear;//用循环的方法加入for i:= to adodm PersonName RecordCount dobeginself ListBox Items Add(adodm PersonName FieldByName( 姓名 ) AsString);adodm PersonName Next;end;listBox Sorted:=true;adodm PersonName First;//DateSet指针指向第一条记录end;// edit SetFocus;end;

  //实现单击选择性名procedure TSelectPY ListBox Click(Sender: TObject);var xIndex:integer;begininherited;xIndex:=self ListBox ItemIndex;//得到Item选项的Indexlabel Caption:=self ListBox Items Strings[xIndex];//从Index得到 Text;getName:=self ListBox Items Strings[xIndex];end;

  输入拼音查找汉字procedure TSelectPY Edit Change(Sender: TObject);varSelStr:string;begininherited;SelStr:= ;ListBox Items Text:=DisByStrInd(listBox Edit Text);end;

  单击选择procedure TSelectPY ListBox Click(Sender: TObject);var nIndex:integer;begininherited;nIndex:=ListBox ItemIndex;ListBox Items Text:=ListBox Items Strings[nIndex];getName:=self ListBox Items Text;end;

cha138/Article/program/Delphi/201311/24657

相关参考

知识大全 完成总分类帐查询功能

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>  ()新建一个窗体将窗体的Name属性设置为TotalAcco

知识大全 工资发放历史查询功能的实现

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 职员信息查询功能的实现[1]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 职员信息查询功能的实现[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 进销存管理系统库存查询功能的实现[1]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>    库存查询功能主要

知识大全 进销存管理系统库存查询功能的实现[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 如何用Delphi实现子目录级的文件查询

如何用Delphi实现子目录级的文件查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在应用实践中

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

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

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

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

知识大全 物料主文件维护功能的实现[4]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>    //查询表中的数