a:array[0..9] of Char;
b:string;
  
    for i:=0 to length(b)-1 do
    begin
      a[i]:=b[i+1];
    end;
可以给数组赋值,但是:
    for i:=0 to length(a)-1 do
    begin
      b[i+1]:=a[i];
    end;
就会报错啊!

解决方案 »

  1.   

    因为 string 类型是生存期自动管理的,在使用它之前,它是没有分配空间的。为了让它有空间,可以这样:
     
    SetLength(b,High(a)-Low(a)+1);
    或 
    b:=StringOfChar(' ',High(a)-Low(a)+1);或用楼上的方法
      

  2.   

    b:='';
    for i:=0 to length(a)-1 do
        begin
          //b[i]:=a[i];
          b:=b+a[i];
        end;
     showmessage(b);
    显然,编译器无法把char写入string,因此给你修改一下,这样就可以按位代替了。
      

  3.   

    要给b设置内存大小,用这个setstring函数