改成以下形式:
procedure cmbBox(cmbBox:tcombobox;  var   a1:array of string;count:integer);

解决方案 »

  1.   

    是生存期自管的,不需要。SETLENGTH
      

  2.   

    (*
    类型不一样!
    在参数中的array of string是叫 开放数组 类型
    在声明中的array of string才是 动态数组 类型参考如下代码
    *)
    type
      TArrayString = array of string;procedure cmbBox(cmbBox:tcombobox;a1: TArrayString;count:integer);
    begin
     SetLength(a1, count);
    end;
      

  3.   

    正如 zswang(伴水)(* 嘻 *) 所说的
    procedure or function中的xx:array of xxx实际上是让你传入一个数组作参数如:
    var
      a:array of string;
    调用:
    procedure (a);
    begin
    end;
    声明:
    procedure (al:array of string);
    begin
    end;
      

  4.   

    procedure cmbBox(cmbBox:tcombobox;a1:array of string;count:integer);
    begin
     SetLength(a1,count);
    begin
    //应用以前的定义;
    procedure cmbBox(cmbBox:tcombobox;count:integer);
    var
    a1:array of string;
    begin
     SetLength(a1,count);
    begin
    //重新定义;
    procedure cmbBox(cmbBox:tcombobox;  var   a1:array of string;count:integer);//本过程中定义
      

  5.   

    还有些疑问
    zswang(伴水)(* 嘻 *)说 
    ‘类型不一样!
    在参数中的array of string是叫 开放数组 类型
    在声明中的array of string才是 动态数组 类型
    另外要注意的是al其实是一个指针
    所以当你修改她的数据时是静态的’
    能解释得更详细些吗?