test = record
  a :byte;
  b :byte;
  c :byte;
end;test2 = record
  s :string;
  tt :array [0..0] of test;
end;var
  a :array [0..0] of char;
  t :test2;
begin
  SetLength(a, 10);  //可以通过
  SetLength(t.tt, 10); //不能通过,为什么?
end;

解决方案 »

  1.   

    两个都通不过, 什么叫动态数组, 建议你去看看书
    test = record
      a :byte;
      b :byte;
      c :byte;
    end;test2 = record
      s :string;
      tt :array  of test;
    end;var
      a :array of char;
      t :test2;
    begin
      SetLength(a, 10);  //可以通过
      SetLength(t.tt, 10); //不能通过,为什么?
    end;
      

  2.   

    楼上的大哥,你试验都没有试验就说两个都通不过,这样会误导初学者的,不要看我一颗星就乱说啊!我才来而已!Delphi里面对于简单型的数组声明为array [0..0] of char;这样是一种特殊的动态数组,初始化为一个长度,但是可以用SetLength来扩充这样的数组,而我说的无法通过的原因是因为我声明的是一个结构体里面包含的一个动态数组,而动态数组的类型又是一个结构体,Delphi帮助中并没有说明为什么,你不信你可以试验我给的代码!