小妹有一个问题:
现在我需要使用多个三维数组来表示几个物体,并同时在内寸内创建这些物体,这些物体的尺寸是不确定的,也就是说所创建的三维数组的下标是不确定的.
我的问题是:
怎么根据物体的长、宽、高(在运行时候确定)定义一个三维数组,并创建多个这样的三维数组,使用一个列表进行管理呢?能否给出一个例程。
在这里先谢了!:)
现在我需要使用多个三维数组来表示几个物体,并同时在内寸内创建这些物体,这些物体的尺寸是不确定的,也就是说所创建的三维数组的下标是不确定的.
我的问题是:
怎么根据物体的长、宽、高(在运行时候确定)定义一个三维数组,并创建多个这样的三维数组,使用一个列表进行管理呢?能否给出一个例程。
在这里先谢了!:)
解决方案 »
- list index out of bounds。。求指导
- ltBatchOptimistic模式下修改记录,无法利用usUnmodified来识别是否已修改记录
- 高手们进来帮菜鸟看看
- 在DLL窗体中如何运用ADO组件
- [求助]请问如何替换两个文本文件中的相关内容?
- 怎样更改windows时间和日期?怎样通过网络获得服务器的时间和日期?
- access多个数据库备份的问题,up有分!!急!!!!
- String 与Array \word\int赋值问题
- 求助:怎样得到Oracle一个用户下所有的存储过程名字及此存储过程下的所有参数名和类型?(急!!)
- 要求出"\"在c:\windows\system中的倒數第幾個位置,用什麼函數?
- 窗體的處理???搞定即結!!!
- 如何格式化日期????
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;
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;
iLength,iWidth,iHeight: Integer;
iLength := 100;
iWidth := 200;
iHeight := 300;
SetLength(arr,iLength,iWidth,iHeight);
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;
是这样写吗,不知道这样写可不可以?
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;
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;优化结果