急救:如果我在文本框中输入汉字:阿托品片,在另一个文本框出现这四个每每个字的有五笔打法的第一个字母:BRKT,不知如何实现?最好给出源码。高分重谢

解决方案 »

  1.   

    思想:通过查找五笔编码文件得到编码的第一个字母
    源码如下:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        ListBox1: TListBox;
        procedure Edit1Change(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function findcode(hz:string;listbox1:Tlistbox):char;
    var i,j,mid:integer;
        s:string;
        ch:char;
    begin
      ch:=' ';
      i:=0;
      j:=listbox1.count-1;
      while(i<=j)do
      begin
        mid:=(i+j) div 2;
        s:=listbox1.Items.Strings[mid];
        if (hz[1]<s[1]) then j:=mid-1
        else if (hz[1]>s[1]) then i:=mid+1
        else if (hz[2]<s[2]) then j:=mid-1
        else if (hz[2]>s[2]) then i:=mid+1
        else begin ch:=s[5]; break; end;
      end;
      result:=ch;
    end;procedure TForm1.Edit1Change(Sender: TObject);
    var i:integer;
        str:string;
        hz:string[2];
        ch:char;
    begin
      edit2.Text:='';
      str:=edit1.text;
      i:=1;
      while i<=length(str) do
      begin
        if ord(str[i])>160 then
        begin
            hz:=copy(str,i,2);
            ch:=FindCode(hz,listbox1);
            i:=i+2;
        end
        else
        begin
            ch:=str[i];
            i:=i+1;
        end;
        edit2.Text:=edit2.Text+ch;
      end;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      listbox1.items.LoadFromFile('wb.txt');
    end;end.//WB.TXT附后
      

  2.   

    lileaf(lileaf) 给我一份
    [email protected]
    thanks
      

  3.   

    upingking() 
    注意查收
      

  4.   

    得高人指点,我用译码生成器生成拼音与五笔的码表,然后只保留每个字的码表。然后把这两张表的对应关系用一张表表示出来。需要时从数据库取出就行了。再建索引,不知这样与从TXT文件取出,那个快。