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

解决方案 »

  1.   

    try this:
    str[0] := 255;
    这样就是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[0] := Char(255);

    str[0] := Chr(255);直接赋数字无法通过语法检查
      

  4.   

    to ehom
    你这样做可以强行改变字符串的长度
    但是,我想知道的是为什么字符串的长度会是176呢
    而我已经很明显的给它赋值了255个'w'呀。to CSDNBowlder
    这样也不行