unitUnit1;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
StdCtrls;
type
TForm1=class(TForm)
ListBox1:TListBox;
ListBox2:TListBox;
Edit1:TEdit;
Label1:TLabel;
procedureEdit1Change(Sender:TObject);
procedureFormShow(Sender:TObject);
procedureFormDestroy(Sender:TObject);
procedureEdit1Enter(Sender:TObject);
procedureEdit1Exit(Sender:TObject);
private
{Privatedeclarations}
public
ResultList1:TStrings;
end;
var
Form1:TForm1;
procedureSearchByPyIndexStr(PYIndexStr:string);
implementation
{$R*.DFM}
functionGetPyIndexChar(Hzchar:string):String;
begin
case(Word(hzchar[1])shl8 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;
procedureSearchByPyIndexStr(PYIndexStr:string);
labelNotFound;
var
I,J:Integer;
Hzchar:String;
begin
ForI:=0toForm1.ListBox1.Items.Count-1do
begin
ForJ:=1toLength(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
gotoNotFound;
end;
Form1.ResultList1.Add(Form1.ListBox1.Items[I]);
NotFound:
end;
end;
procedureTForm1.Edit1Change(Sender:TObject);
begin
ifEdit1.Text<>''then
begin
ListBox2.Items.Clear;
Form1.ResultList1.Clear;
SearchByPyIndexStr(edit1.text);
ListBox2.Items.AddStrings(ResultList1);
end;
end;
procedureTForm1.FormShow(Sender:TObject);
begin
ResultList1:=TStringList.Create;
end;
procedureTForm1.FormDestroy(Sender:TObject);
begin
ResultList1.Free;
end;
procedureTForm1.Edit1Enter(Sender:TObject);
begin
Edit1.Text:='';
end;
procedureTForm1.Edit1Exit(Sender:TObject);
begin
Edit1.Text:='请输入声母';
end;
end.