0123456789
转换成  
0123456789

解决方案 »

  1.   

    //在大富翁离线数据库找到一个 
    你看看 :)
    Var
      Char_BJ = array[1..20] of char;            // 半角数组
      Char_QJ = array[1..20] of string[2];       // 全角数组 初始化时给两个数组赋值
      Char_BJ --> ('1','2','3','4','5',........)
      Char_QJ --> ('1','2','3','4','5',........)function BjToQj(c: char): string;
    begin
      Result := '';
      for i := Low(Char_BJ) to High(Char_BJ) do begin
        if Char_BJ[i] = c then begin
          Result := Char_QJ[i];
          exit;    
        end;
      end;
    end;
      

  2.   

    思路倒是可行 上午也想到过 总觉得这样使优点不舒服 总想找出DELPHI里有哪种函数直接转换就好了 不过暂时先用这种方法做做看吧 期待有更好的方法
      

  3.   

    试试这个:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
      p:array [0..10] of WideChar;
      i:integer;
    begin
      s:='0123456789';
      StringToWideChar(s,p,11);
      for i:=0 to 9  do
        p[i]:=WideChar(integer(p[i])+$fee0);
      ShowMessage(p);
    end;
      

  4.   

    简化一下:
    procedure TForm1.Button2Click(Sender: TObject);
    var
      s:widestring;
      i:integer;
    begin
      s:='0123456789';
      for i:=1 to 10  do
        s[i]:=WideChar(integer(s[i])+$fee0);   ShowMessage(s);
    end;
      

  5.   

    楼上的方法比较好用 分已经给过 只是还时不太明白后面$fee0的具体意思 
    如果朋友能把字符转换这方面比较全面的知识稍微给我讲解一下 我会另开贴送分
      

  6.   

    $fee0是unicode的'0'与'0'之间的内码差
    '0'的unicode内码为$ff10,而0的内码为$30
    两者相差为$fee0
    所以:
    '0'+['0'-'9'] =['0'-'9']
      

  7.   

    function NumberH2F(AHalfStr:string):String;
    var
      i:integer;
    begin
      Result:='';
      if length(AHalfStr) > 0 then
      for i:=1 to length(AHalfStr) do
      begin
        if AHalfStr[i] in ['0'..'9'] then
           Result:=Result+WideChar(integer(AHalfStr[i])+$fee0)
        else
           Result:=Result+AHalfStr[i];
      end;
    end;
      

  8.   

    再来一个逆转函数。。
    function NumberF2H(AFullStr:string):String;
    var
      i:integer;
      p:WideString;
    begin
      Result:='';
      if length(AFullStr) > 0 then
      begin
      p:=WideString(AfullStr);
      for i:=1 to length(p) do
      begin
          if Char(integer(p[i])-$fee0) in ['0'..'9'] then
           Result:=Result+Char(integer(p[i])-$fee0)
        else
           Result:=Result+p[i];
      end;
      end;
    end;