知识大全 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
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>> 库存查询功能主要
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
如何用Delphi实现子目录级的文件查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在应用实践中
Delphi用拼音首字符序列实现检索功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在日常工
在Delphi中用拼音首字符序列来实现检索功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>> //查询表中的数