在Delphi7中用的好好的,在DELPHI2009中中文拼音首字获取函数怎么不能用啦?大家帮我看看!function getPY(hzchar:string):char;
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';
  $D189..$D4D0:result:='Y';
  $D4D1..$D7F9:result:='Z';
ELSE
  RESULT:=char(32);
end;
end;

解决方案 »

  1.   

    type
      GB2312String = type AnsiString(936);function foo(const S: GB2312String): Char;
    ...
      

  2.   


    function foo(const S: GB2312String): Char; 要改为function foo(const S: GB2312String): AnsiChar; 
      

  3.   

    是unicode的问题,我待解决这个问题,解决了麻烦告诉一声
      

  4.   

    function getPY(hzchar:AnsiString):AnsiChar;
    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';
      $D189..$D4D0:result:='Y';
      $D4D1..$D7F9:result:='Z';
    ELSE
      RESULT:=char(32);
    end;
    end;
      

  5.   

    取每一个字符试试,
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i,j:integer;
    s,s1,py:string;
    begin
       s:=Edit1.Text;
       i:=0;
       j:= length(s);
       Edit2.Text:='';
       for i := 0 to j do
         begin
           s1:=s[i];
           py:=getpy(s1);
           Edit2.Text:=edit2.Text+py;
         end;
    end;
      

  6.   


    function getPY(hzchar:AnsiString):AnsiChar; 
    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'; 
      $D189..$D4D0:result:='Y'; 
      $D4D1..$D7F9:result:='Z'; 
    ELSE 
      RESULT:=AnsiChar(32); 
    end; 
    end;
      

  7.   

    请参考:
    http://topic.csdn.net/u/20090311/13/fd119d62-91eb-45c9-94b0-896c221437f7.html