时间: 2021-07-31 作者:daque
Delphi中实现汉字拼音声母查询,unit代码如次:unit unit1;
interface
uses windows, messages, sysutils, classes, graphics, controls, forms, dialogs, stdctrls;
type tform1 = class(tform) listbox1: tlistbox; listbox2: tlistbox; edit1: tedit; label1: tlabel; procedure edit1change(sender: tobject); procedure formshow(sender: tobject); procedure formdestroy(sender: tobject); procedure edit1enter(sender: tobject); procedure edit1exit(sender: tobject); private { private declarations } public resultlist1:tstrings; end;
var form1: tform1;
procedure searchbypyindexstr(pyindexstr :string);
implementation
{$r *.dfm}function getpyindexchar(hzchar:string):string;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..$d1b8 : result :='x'; $d1b9..$d4d0 : result :='y'; $d4d1..$d7f9 : result :='z'; else result := char(0); end;end;
procedure searchbypyindexstr(pyindexstr :string);label notfound;var i, j :integer; hzchar :string;begin for i:=0 to form1.listbox1.items.count-1 do begin for j:=1 to length(pyindexstr) do begin hzchar :=form1.listbox1.items[i][2*j-1]+form1.listbox1.items[i][2*j]; if (pyindexstr[j] <>'?') and (uppercase(pyindexstr[j])<>getpyindexchar(hzchar)) then goto notfound; end; form1.resultlist1.add(form1.listbox1.items[i]); notfound: end;end;
procedure tform1.edit1change(sender: tobject);begin if edit1.text<>'' then begin listbox2.items.clear; form1.resultlist1.clear; searchbypyindexstr(edit1.text); listbox2.items.addstrings(resultlist1); end;end;
procedure tform1.formshow(sender: tobject);begin resultlist1:=tstringlist.create;end;
procedure tform1.formdestroy(sender: tobject);begin resultlist1.free;end;
procedure tform1.edit1enter(sender: tobject);begin edit1.text:='';end;
procedure tform1.edit1exit(sender: tobject);begin edit1.text:='请输出音位';end;
end.