📄 autowbpyu.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 + -