function GetAsc(hz:String):char;
var c:integer;
begin
    c:=ord(hz[2])-128;
    GetAsc:=chr(c);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(GetAsc('1'));
end;

解决方案 »

  1.   

    程序是这样写的:
    //删除oldstr空格,把全角转换成半角
    procedure transstr(oldstr:string; var newstr:string);
    var
      i:integer;
    begin
      newstr:='';
     i:=1;
      if length(oldstr)<>0 then
        while i<=length(oldstr) do
        begin
          if ord(oldstr[i])=163 then
          begin
            newstr:=newstr+chr(ord(oldstr[i+1])-128);
            i:=i+2;
          end
          else if ord(oldstr[i])=161 then
            i:=i+2
          else if oldstr[i]=' ' then
            i:=i+1
          else
          begin
            newstr:=newstr+oldstr[i];
            i:=i+1;
          end;
        end;end;
      

  2.   

    (2001-10-07 10:00:00)   风语者
    汉字、全角数字和全角字母都是双字节码,第一个字节的值减去160表示该字在字库中的区
    码,第二个字节的值减去160为位码,如‘啊’的16进制编码为B0 A1,换算成十进制数就是
    176和161,分别减去160后就是16和1,即‘啊’字的区位码是1601,同样数字和字母的区位
    码也是如此,如‘0’是0316,‘1’是0317等,因此判断汉字及全角字符基本上只要看其连
    续的两个字节是否大于160,至于半角字符和数字则更简单了,只要到ASCII码表中查一查就
    知道了。
      

  3.   

    程序更正如下:已经能够基本满足我的需要,谢谢大家
    表述如有错误,还请更正
    //删除oldstr空格,把全角转换成半角
    //根据汉字字符编码规则:连续两个字节都大于160,
    //全角符号第一字节大部分为163
    //~,全角空格第一字节都是161,不知道怎么区分?
    procedure transstr(oldstr:string; var newstr:string);
    var
      i:integer;
    begin
      newstr:='';
      i:=1;
      if length(oldstr)<>0 then
        while i<=length(oldstr) do
        begin
          if ord(oldstr[i])=163 then        //转换全角符号
          begin
            newstr:=newstr+chr(ord(oldstr[i+1])-128);
            i:=i+2;
          end
          else if ord(oldstr[i])=161 then   //去掉全角空格
            i:=i+2
          else if oldstr[i]=' ' then        //去掉半角空格
            i:=i+1
          else if ord(oldstr[i])>160 then   //如果是汉字,不进行是否是163判断
          begin
            newstr:=newstr+oldstr[i]+oldstr[i+1];
            i:=i+2;
          end
          else
          begin
            newstr:=newstr+oldstr[i];   //其他半角字符
            i:=i+1;
          end;
        end;end;