我声明了一个记录:type
    TRecord=packed record
     A:string[20];
     B:array of array of String[20];
end;type 
    Form1=class(TForm)
     private
            FRecord:TRecord;
     public 
            property Record:TRecord read FRecord write FRecord;
            procedure First;
end;procedure TForm1.First;
begin
     Record.A:='abc';
     SetLength(Record.B,2,2)//问题就出在这儿了?
end;请问,我该如何初始化这个数组呀!

解决方案 »

  1.   

    SetLength(Record.B, 2);
    SetLength(Record.B[0], 2);
    SetLength(Record.B[1], 2);
      

  2.   

    UP
    今天遇到一个问题,调用Dll的时候传进来一个动态的数组参数,我在Dll里面定义了一个动态的数组
    Type
          ArrayOfString=Array of string;
    Form的Publice中写了这么一个数组的属性
          property YY:ArrayofString read FYY write SetYY;
    Dll中执行了如下的一个过程
    判断传入参数的个数
    使用SetLength
    SetLength(Form1.YY,大小)给YY分配内存和空间,编译器不能通过
    在窗体中执行SetLength(YY,大小)同样的问题
    但是我直接访问私有数据SetLength(FYY,大小)编译器就可以通过,请问怎么解决?
      

  3.   

    错误信息:
    [Error] Unit1.pas(58): Constant object cannot be passed as var parameter