var
acc1: array[0..9] of widechar
accstr:string;
i:integer;  
begin 
      accstr:='china11000';
      for i:=0 to 9 do
      acc1[i] := widechar(accstr[i]);
     showmessage(string(acc1));
end;
编译能通过,但为什么字符串无法赋值进acc1中呢?    这个程序运行的结果是空的! 应怎么作才能把字符串'china11000'赋值进acc1中呢?

解决方案 »

  1.   

    先讲一下 char对应string的每一位; widechar对应widestring的每一位,最好对应好,wide就是指所有符号占两个字节。  但是对于你这个'china11000' 字符里面没有中文符号来讲,是没什么区别的。acc1[i] := widechar(accstr[i]);首先这句错了,字符是从第1位开始,而你的i=0 to 9;
    所以改成acc1[i] := widechar(accstr[i+1]);procedure TForm1.btn1Click(Sender: TObject);
    var
     acc1: array[0..9] of widechar;
     accstr:WideString;
     i:integer;
    begin
      accstr:='china11000';
      for i:=0 to 9 do
       acc1[i] := widechar(accstr[i+1]);
      showmessage(widestring(acc1));
    end;
      

  2.   

    Good Good Study ! Day Day Up!