我是这样做的
1.先用输入法生成器程序把全拼输入法的码表文件WINPY.MB转换成一个TXT文件,把这个文件的头信息去掉(该文件的格式参考输入法生成器的帮助)
最后如:
a 啊 阿
.
.
然后通过编程把汉字取出来,并保证该汉字只出现一次
最后如:(一行一个汉字)
啊
阿
.
.
2.利用Word97的一个排序功能(汉字笔划)对生成的文挡排序,具体选择菜单“表格”-》“排序”, 类型当中选择“笔画”即可;
3.最后是排序好了,生成一个数据库文件,每次排序时与库文件进行比较;以上方法有点烦,不过可以,希望对你有启发!
1.先用输入法生成器程序把全拼输入法的码表文件WINPY.MB转换成一个TXT文件,把这个文件的头信息去掉(该文件的格式参考输入法生成器的帮助)
最后如:
a 啊 阿
.
.
然后通过编程把汉字取出来,并保证该汉字只出现一次
最后如:(一行一个汉字)
啊
阿
.
.
2.利用Word97的一个排序功能(汉字笔划)对生成的文挡排序,具体选择菜单“表格”-》“排序”, 类型当中选择“笔画”即可;
3.最后是排序好了,生成一个数据库文件,每次排序时与库文件进行比较;以上方法有点烦,不过可以,希望对你有启发!
function Tform1.GetPYIndexChar(hzchar:string):char;//HZCHAR是单个汉字,
begin
case WORD(hzchar[1]) shl 8 + 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..$D188:result:='X';
$D1B9..$D4D0:result:='Y';
$D4D1..$D7F9:result:='Z';
else
result:=char(0);
end;
end;
如果按拼音排序,那么DELPHI直接就可以做到!如果建立索引,则自动排序!
lucktoours的方法时取某个汉字的第一个拼音。