http://www.csdn.net/expert/topic/15/15588.shtm
http://www.csdn.net/expert/topic/91/91434.shtm

解决方案 »

  1.   

    天!
    我记得我都回答了好几次这个问题了,
    你提问前搜索一下,免得浪费分数。
    现在在次重贴,分我都不好意思要了。
    function Tfrmaddry.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; 
      

  2.   

    这段程序只能找从B0A1~D7F9之间的常用字,对很大一部分不常用字就无能为力了,随便举个例子:惂(90 a7).这些非常用字内码是按笔划来的,要按音序,难。
    不过奇怪的是,若用ListBox来排序(Sorted属性为true),就可以正常按音序派出了,怪!