动态数组,如何减少?(200分)

  • 主题发起人 主题发起人 wangfu
  • 开始时间 开始时间
W

wangfu

Unregistered / Unconfirmed
GUEST, unregistred user!
关于动态数组,可以动态增加。
但是我想减少,和记录的删除类似。怎么操作?
 
SetLength(aArray, aLen);
 
我减少的数组中间的一条,咋办?
 
这样恐怕只能用链表了!
 
我用d7里面的动态数组,我觉得好像有些问题
后来改用TList,比较正常
 
如果要删中间的,你就用Tlist来管理,如果只删除最后的,就用数组,SetLength(Arr,?)
 
我一般都用TList,很好管理.动态数组不能作为参数传给过程或函数,即在函数中不能改变
数组的长度,很麻烦.
 
减少中间一条:把该条往后的记录全部前移一条,然后 SetLength
Delphi 的 TList 就是这样管理的:)
当然,你可别做个循环去移动啊,呵呵,用 Move。比如:

var
arr: array of DWord;
begin
...
// 删除第 i 条(i 从 0 开始)
Move(arr[i + 1], arr, (High(arr) - i) * SizeOf(DWord));
SetLength(arr, High(arr) + 1 - 1)
// 缩短
...
end;

 
多人接受答案了。
 
后退
顶部