我使用动态数组很多,并且SetLength和Finalize程序没有问题.
我最近有理由使用动态数组,其中每个数组元素本身可以包含可变数量的元素.声明是这样的:
TScheduleArray = array of array of array [1..DaysPerWeek] of TShiftType;
Run Code Online (Sandbox Code Playgroud)
该软件工作正常,我没有遇到如何使用这种结构的问题.在主数组上调用SetLength,然后可以在每个数组元素上再次调用SetLength.这是按预期工作的.
SetLength(MyArray, 1);
SetLength(MyArray[0], 2);
Run Code Online (Sandbox Code Playgroud)
我的问题是:当我来释放用于此数组的资源时,我是否只是在数组变量上调用Finalize:
Finalize(MyArray);
Run Code Online (Sandbox Code Playgroud)
或者每个数组元素是否也需要Finalize d,因为每个元素本身就是一个动态数组?
Quote: "你在主数组 上调用SetLength,然后可以在 每个数组元素上再次调用SetLength ."
你真的不必遍历你的数组.
SetLength() 接受每个维度的长度列表.
例:
SetLength(ScheduleArray,200,15,35);
Run Code Online (Sandbox Code Playgroud)
是相同的:
SetLength(ScheduleArray,200);
for i:=low(ScheduleArray) to high(ScheduleArry) do
begin
SetLength(ScheduleArray[i],15);
for j:=low(ScheduleArray[i]) to high(ScheduleArray[i]) do
SetLength(ScheduleArray[i,j],35);
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1365 次 |
| 最近记录: |