我定一个数组
var
  strOxArr : array of array[0..2] of string;怎样将它传入一个函数中
 我这样定义:procedure AddAllSubToArr(iNO : integer;var strArr : array of array[0..2] of string);
或procedure AddAllSubToArr(iNO : integer;var strArr : array of string);
都编译时出错!也看过下边贴子
http://expert.csdn.net/Expert/topic/2002/2002585.xml?temp=.8664057
那我是动态数组呀!

解决方案 »

  1.   


    应该这样var
      strOxArr : array of array[0..2] of string[n];
      

  2.   

    可以把实参和形参都定义成 array of array of string,procedure AddAllSubToArr(iNO : integer;var strArr : array of array of string;rows,cols:Integer);//rows,cols: strArr的行数和列数我觉得这是delphi不方便的地方,特别是开发科学计算程序更是如此。
      

  3.   

    你这样用字符串数组,,还不如用 TStringList 类来得快、简便
      

  4.   

    我也同意nnfish(游在Code中的鱼)的意见。用数组还要自己检验范围。
      

  5.   

    我觉得动态数组无论是在资源上、速度上还是扩展方面都要比TStringlist好,而且在内存管理上也无需你操心。只是编程要复杂一点。我很喜欢动态数组。
    你的问题可以这样解决。
    //线定义两个类型。也可自定义一个就是TStrTwo=TstrTwo=array of array [0..2] of string;但多维数组一维一维定义一个类型,操作方便一点。
    type
      TStrone=array [0..2] of string;
      TStrTwo=array of TStrone;//然后定义动态数组
    var
    STroxarr:TStrTWo;//函数中这样访问数组如下
    procedure AddAllSubToArr(iNO : integer;var strArr : TStrTwo);
    var
    i:integer;
    begin
     for i:=low(strarr) to high(strarr) do
     begin
       showmessage(strarr[i][0]);
       showmessage(strarr[i][1]);
       showmessage(strarr[i][2]);
     end;
    end;
    或者是
    procedure AddAllSubToArr(iNO : integer;var strArr : TStrTwo);
    var
    i,j:integer;
    begin
     for i:=low(strarr) to high(strarr) do
     begin
       for j:=low(strarr[i]) to high(strarr[i]) do
       begin
        showmessage(strarr[i][j]);
       end;
     end;
    end;//调用就是addallsubtoarr(iNO,stroxarr);
      

  6.   

    不同意楼上观点,TStringList是delphi的一个绝好的类,资源上、速度上应该反过来才是