var
  s:string;
  i:integer;
  b:array[1..4] of byte;
begin
  setlength(s,6);
  b[1]:=71;
  b[2]:=72;
  b[3]:=73;
  b[4]:=74;
  for i:=1 to 4 do
    s[i]:=chr(b[i]);
  edit1.text:=s;
end;用我上面的代码,你就知道原因了。

解决方案 »

  1.   

    那为什么下面的也不行?1的ASCII不是31吗?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
      i:integer;
      b:array[1..4] of byte;
    begin
      setlength(s,6);
      b[1]:=31;
      b[2]:=32;
      b[3]:=33;
      b[4]:=34;
      for i:=1 to 4 do
        s[i]:=Chr(b[i]);
      edit1.text:=s;
    end;
      

  2.   

    那为什么下面的也不行?“1”的ASCII码不是“31”吗?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
      i:integer;
      b:array[1..4] of byte;
    begin
      setlength(s,6);
      b[1]:=31;
      b[2]:=32;
      b[3]:=33;
      b[4]:=34;
      for i:=1 to 4 do
        s[i]:=Chr(b[i]);
      edit1.text:=s;
    end;
      

  3.   

    ascii 的 0-31都是不可打印字符,你当然什么都看不到。
      

  4.   

    你的31等都是16进制的,1的十进制ascii 为49
      

  5.   

    你的31等都是16进制的,1的十进制ascii 为49
      

  6.   

    这么说数字的就不行了?integer:0~9改怎么办?