⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autowbpyu.pas

📁 在DELPHI下调用API获取汉字五笔拼音
💻 PAS
字号:
unit AutoWBPYu;

interface

uses
   SysUtils,  Classes,windows;


    {取编码}
    {sel := 1 取五笔头码}
    {sel := 2 取五笔全码}
    {sel := 3 取拼音头码}
    {sel := 4 取拼音全码}
    procedure  getbm( var str : shortstring ; sel : integer); exports  getbm;    // external;//



    {存放编码的数组}
    var   BM : TstringList;


    {版本号}
    const  VersionNumber  = 'V100' ;

    {创建时间}
    const  CreateDate ='2002-09-20';

    {作者}
    const  Author  = '韦建琨';


    {$R  wbpy.res} {包含 "五笔.TXT" 和 "拼音.TXT"  的资源文件 }



implementation

procedure  loadBM( fn : string ; sel : integer);
var
        R: TResourceStream;
begin

        try

                {其中 WB 、 PY 为名称,TXT 为资源类型}
                case sel of
                1 , 2 :
                        R := TResourceStream.Create(HInstance, 'WB', 'TXT');
                3 , 4 :
                        R := TResourceStream.Create(HInstance, 'PY', 'TXT');
                else
                end;

                {保存到文件}
                R.SaveToFile( fn );

                FileSetAttr( fn , faHidden ) ;


        except
        end;

        R.Free;

end;




{取单个汉字的编码}
function  GetOne(  hz  : shortstring ):shortstring;
var     i : integer;
        s : shortstring;
begin

        result := '';

        for  i := 0  to  bm.Count - 1  do
        begin
                s := bm[ i ] ;
                if  hz[1] + hz[2] = s[ 1 ] + s[ 2 ] then
                begin
                        result := trim( copy( s , 3 , 10 ) );
                        break;
                end;
        end;

end;


{取编码}
procedure  GetBM( var str : shortstring ; sel : integer );

var     i : integer;
        s , m  , fn: shortstring;
        PATH: array[0..30] of char;
begin
        try
                {动态建立字符列表}
                bm := tstringlist.Create;

                GetSystemDirectory(path,30);

                {选择编码文件}
                case  sel of
                1 , 2 :
                        fn := string(PATH) + '\五笔' + VersionNumber + '.TXT';
                3 , 4 :
                        fn := string(PATH) + '\拼音' + VersionNumber + '.TXT';
                else
                end;


                {编码文件存在则直接读取,否则从资源中释放}
                if  not FileExists( fn )  then  loadbm( fn , sel );
                bm.LoadFromFile( fn );


                s := '';
                i := 0 ;
                while  i <= length( str ) - 1  do begin
                        if   ord( str[ i ] ) >127  then
                        begin
                                m :=  GetOne( str[ i ] + str[ i + 1 ] ) ;
                                if  m <> '' then
                                begin
                                        case  sel of
                                        1 , 3 :
                                                s :=  s  +  m[ 1 ]  ;
                                        2 , 4 :
                                                s :=  s   + m  + ' '; {加空格}

                                        else
                                        end;
                                end;

                                i := i + 2;
                        end
                        else
                        begin
                                i := i + 1;
                        end;
                end;

                str := s ;


        finally

                {释放数组}
                bm.Free;
        end;

end;


end.



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -