var
  str:shortstring;
  i:integer;
begin
  for i:= 1 to 255 do
  str[i]:='w';
end;
如此str的长度应该是255吧,但是用length(str)却是176;为什么?

解决方案 »

  1.   

    因为str是将长度储存在str[0]中,所以这样str[0]:=chr(255);
      

  2.   

    你这样声明:
    var
      str:String[255];//这就表示一个255个字符的ShortString字符串
      i:integer;
    begin
      for i:= 1 to 255 do
      str[i]:='w';
    end;
    因为ShortString主要用于向Dephi1.0兼容,所在平时我们所使用的都是AnsiString。在声明ShortString的时候,最好声明其长度。
    试试看!!!
      

  3.   

    改为:
    str:='';
    for i:= 1 to 255 do
    str:=str+'w';就行了!