我现在有一个这样的函数GetCombo(a1:array of string;a2:array of string)
这里的a1和a2是动态数组,我的本意是想在这个函数里面进行a1,和a2的初始化,也就是这个动态数组的大小是在函数内才知道的,我是使用setLength来制定数组大小的,但是实际上编译的时候,在使用setLength的时候就出错。后来我把这部分设置数组大小的代码,直接放在调用getCombo的那个函数那里进行数组大小指定,结果编译通过,并且程序运行正常。所以我想问各位大侠,我该怎么做,才能把这个动态数组的大小放在getCombo这个函数里来制定呢?谢谢了

解决方案 »

  1.   

    >>array of string
    這個應該有問題的, 
    用array of char;好點
      

  2.   

    //参数表中的array of string形式属于开放数组(不叫动态数组)~~
    //开放数组兼容普通数组和动态数组~~
    如果这样声明:procedure f(a1:array of string);
    就是可以
    var
      A: array[0..1] of string;
      B: array of string;
    begin
      f(A);
      f(B);
      f(['1', '2']);
    end;
    SetLength(A)怎么可能~~
    这就是开放数组和动态数组的区别~~
    如果想实现就需要定义一个专用的类型~~type
      TArrayString = array of string;procedure GetCombo(var a1: TArrayString; var a2: TArrayString);
    begin
      SetLength(a1, 10);
      SetLength(a2, 10);
    end;