小妹有一个问题:
现在我需要使用多个三维数组来表示几个物体,并同时在内寸内创建这些物体,这些物体的尺寸是不确定的,也就是说所创建的三维数组的下标是不确定的.
我的问题是:
  怎么根据物体的长、宽、高(在运行时候确定)定义一个三维数组,并创建多个这样的三维数组,使用一个列表进行管理呢?能否给出一个例程。
在这里先谢了!:)

解决方案 »

  1.   

    type TMyGod= Record
            iLength: Integer; 
            iWidth : Integer;
            iHeight: Integer;
    end;var arr: array of TMyGod;  //定义动态数组
        ii: Integer;
    //根据实际物体的个数,进行动态分配内存
    SetLength(arr,100);
    for ii := 0 to 100 - 1 do
    begin
      arr[ii].iLength := ii;
      arr[ii].iWidth  := ii * 2;
      arr[ii].iHeight := ii * 3;
    end;
      

  2.   

    type arr2=Array [1..20] of float;
         arr3=array [1..20] of arr2;type urpointer=^arrRecord;
         arrRecord=record
             arr3;
    end;var :i:urpointer;
    then urList:TList;
         urList:=TList.create;
         urList.Add(i);
         urList.free;
         urList.free;     
      

  3.   

    var arr: array of array of array of Integer;
        iLength,iWidth,iHeight: Integer;
        
      iLength := 100;
      iWidth  := 200;
      iHeight := 300;
      SetLength(arr,iLength,iWidth,iHeight);
      

  4.   

    genphone_ru(改行去学VC) 你的写法我也懂!我的意思是这样写是否可以把Arr的地址赋予一个列表呢?
    FList: TList;FList.Add(arr);
    这样的话Arr的引用是否加一呢?其实我是想创建一个TList列表,把三维数组的交给TList对象管理.一个TList对象管理多个三维数组.如果使用动态数组实现,在一个过程中定义一个动态数组
    procedure proc(const L, w, h: integer);
    var
      Arr: array of array of array of boolean;
    begin
      setLength(Arr, l, w, h);
      FList.Add(arr);
    end;
    是这样写吗,不知道这样写可不可以?
      

  5.   

    const
      ARRAYSIZE = 10;
    type
      TA = array of array of array of integer;
    procedure GenArray(l, w, h: integer; aT: TA);
    begin
      setlength(aT, l, w, h);
    end;procedure AddArray(TL: TList; aT: TA);
    begin
      TL.Add(aT);
    end;var
      i: integer;
      tl: TList;
      al: TA;
    begin
      tl := TList.Create;
      for i := 1 to ARRAYSIZE do
      begin
        GenArray(5,5,5,al);
        AddArray(tl,al);
      end;
      tl.Free;
    end;
      

  6.   

    const
      ARRAYSIZE = 10;
    type
      TA = array of array of array of integer;procedure GenArray(l, w, h: integer; aT: TA; tL: TList; tC: integer);
    var
      i: integer;
    begin
      for i:=1 to tC do
      begin
        setlength(aT, l, w, h);
        tL.Add(aT);
      end;
    end;var
      i: integer;
      tl: TList;
      al: TA;
    begin
      tl := TList.Create;
      GenArray(5,5,5,al,tl,ARRAYSIZE);
      tl.Free;
    end;优化结果
      

  7.   

    强烈建议使用TList,例子帮助里边有