www.pudn.com > 汉字TO拼音五笔.rar > Unit1.pas


//##################################################################### 
//##################################################################### 
//#### 功能:得到汉字的五笔、拼音编码  (支持 7500个简体、繁体汉字) 
//#### 原理:通过查询资源文件 wbtext.rec 得到编码 
//#### 时间:2003-06-25 
//#### 作者:阳忠华 
//#### E-mail: chinausa@163.net 
//##################################################################### 
//##################################################################### 
unit Unit1; 
 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    Edit1: TEdit; 
    Label1: TLabel; 
    Edit2: TEdit; 
    Label2: TLabel; 
    Edit3: TEdit; 
    Label3: TLabel; 
    Edit4: TEdit; 
    Label4: TLabel; 
    Edit5: TEdit; 
    Label5: TLabel; 
    procedure Button1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
 
var 
  Form1: TForm1; 
implementation 
 
{$R *.DFM} 
 
{$R wbtext.res} //资源文件,必须 
 
function get_hz_pywb(hzstr: string; pytype: integer): string; 
var 
  I: Integer; 
  allstr: string; 
  hh: THandle; 
  pp: pointer; 
  ss: TStringList; 
   
  function retturn_wbpy(tempstr: string; tqtype: integer): string; 
  var 
    outstr, str: string; 
    i: integer; 
  begin 
  //################### 汉字查询电位 
    i := 0; 
    while i <= ss.Count - 1 do 
    begin 
      str := ss.Strings[i]; 
      if (tempstr = trim(str[1] + str[2])) or (tempstr = trim(str[3] + str[4])) then 
      begin 
        str := ss.Strings[i]; 
        Break; 
      end; 
      i := i + 1; 
    end; 
  //################### 
 
    outstr := '';     //提取编码 
    if tqtype = 1 then 
    begin 
      for i := pos('①', str) + 2 to pos('②', str) - 1 do 
        if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
    end; 
 
    if tqtype = 2 then 
    begin 
      for i := pos('②', str) + 2 to pos('③', str) - 1 do 
        if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
    end; 
 
    if tqtype = 3 then 
    begin 
      for i := pos('③', str) + 2 to pos('④', str) - 1 do 
        if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
    end; 
 
    if tqtype = 4 then 
    begin 
      for i := pos('④', str) + 2 to length(str) do 
        if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
    end; 
    Result := trim(outstr); 
  end; 
 
begin 
  //加载资源文件,将内容赋值给 s 
  ss := TStringList.Create; 
  hh := FindResource(hInstance, 'mywb', 'TXT'); 
  hh := LoadResource(hInstance, hh); 
  pp := LockResource(hh); 
  ss.Text := pchar(pp); 
  UnLockResource(hh); 
  FreeResource(hh); 
 
  allstr := ''; 
  i := 0; 
  while i <= length(hzstr) do   //提取汉字字符 
  begin 
    if (Ord(hzstr[I]) > 127) then 
    begin 
      if allstr = '' then allstr := retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype) else allstr := allstr + retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype); 
      i := i + 2; 
    end 
    else 
    begin 
      if allstr = '' then allstr := hzstr[I] else allstr := allstr + hzstr[I]; 
      i := i + 1; 
    end; 
  end; 
 
  ss.Free; 
   
  Result := trim(allstr); 
end; 
 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
//  1: 拼音  2:五笔  3: 拼音简码  2:五笔简码 
  edit2.text := get_hz_pywb(edit1.text, 1); 
  edit3.text := get_hz_pywb(edit1.text, 3); 
  edit4.text := get_hz_pywb(edit1.text, 2); 
  edit5.text := get_hz_pywb(edit1.text, 4); 
end; 
 
end.