type
  Tarr2=array of array of string;procedure TFrm_Statistics.IniState(arr: Tarr2);这样行不行?

解决方案 »

  1.   

    不行啊。报错:incompitable types array and tarr
    array的内容我必须在const里定义好
    const
      arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
      arr_Duty2:array[0..1, 0..5]
      

  2.   

    不行啊。报错:incompitable types array and tarr
    array的内容我必须在const里定义好
    const
      arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
      arr_Duty2:array[0..1, 0..5]const
      arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
      arr_Duty2:array[0..1, 0..5]
    改为
    var
      arr_Duty1,arr_Duty2:Tarr2;在初始化时一次性设置好:
    i:=0; j:=0;
    arr_Duty1[i,j]:=''rb_Duty1'; inc(j);
    arr_Duty1[i,j]:=''grp_Duty1'; inc(j);
    inc(i); j:=0;
    arr_Duty1[i,j]:=''rb_Duty1'; inc(j);
    arr_Duty1[i,j]:=''grp_Duty1'; inc(j);
    ...
      

  3.   


    type
      arr_Duty1 = array [0 .. 1, 0 .. 1] of string;
      const
      arr1:arr_Duty1=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
    function myFunc(var arr1: arr_Duty1): string;
    begin
      Result := Format('数组成员数:%d', [High(arr1)+1]);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      sArr:arr_Duty1;
    begin
      ShowMessage(myFunc(sArr));
    end;
      

  4.   

    Const
      arr_Duty1: array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
      arr_Duty2: array[0..2, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1') , ('a','b'));type
      TConstStringList = array [0..0] of String;
      PConstStringList = ^TConstStringList;procedure Doit(aArray : PConstStringList; AllLen : integer);
    var
      i : integer;
    begin
      for i:=0 to AllLen-1 do
        ShowMessage(aArray^[i]);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Doit(@arr_Duty1 , 4);
      Doit(@arr_Duty2 , 6);
    end;
    无法获取长度,需要传递一个长度参数进去
      

  5.   

    为什么这么麻烦呢, 用结构体,然后再用结构体来定义数据。这样管理起来方便,看的也很清楚type
       tagDemo = record
         ID: string[255];
         Name: string[255];
       end;   LPDemo = ^ tagDemo;
    var
      arrDemo: array of tagDemo;这样就象数组一样赋值了。
      

  6.   

    又或者用 Class 来保存数据 TDemo = class(TObject)
      private
        FName: string;
        FID: string;
        procedure SetID(const Value: string);
        procedure SetName(const Value: string);  protected  public
        constructor Create;
        destructor Destroy; override;    procedure Copy(ADemo: TDemo);
      published
        property ID: string  read FID write SetID;
        property Name: string  read FName write SetName;
      end;var
      ObjList: TList;   //用TList来保存创建的类,如果用D2010 可以使用泛型。TObjectList<T>