这样行不行?使用默认的$H设置(记不起 + 还是 - 了总之别改它)var
  MyStr: String;
  temp: Integer;begin
  for temp := 1 to 1000 do
  begin
  MyStr := MyStr + 'A';
  end;end.

解决方案 »

  1.   

    SetLegnth(MyStr, 1000); //分配资源
      

  2.   

    你用的是
    MyStr[temp] := 'A';
    来附值。Temp一超过字符串长度就会报错。所以开始你不得不给字符串赋值‘aa’
    要不然一开始就会超过字符串的长度。
    有两种方法解决
    方法1:
    begin  setlength(MyStr,1000);//给字符串分配长度.  for temp := 1 to 1000 do
      begin
      MyStr[temp] := 'A';
      writeln (IntToStr(temp));
      end;end.
    方法2:  
    begin  MyStr:='';//给字符串分配长度.  for temp := 1 to 1000 do
      begin
      MyStr:= MyStr+'A';
      writeln (IntToStr(temp));
      end;end.
      

  3.   

    setlength(MyStr,1000);/
    这种方法比较好,速度要快些,因为不用没加一个CAHR就分配一次资源!
      

  4.   

    SetLength 可以! 死机了, 但是不出错~~~~~