W wangfu Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-12 #1 关于动态数组,可以动态增加。 但是我想减少,和记录的删除类似。怎么操作?
叶 叶孤城 Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-12 #6 我用d7里面的动态数组,我觉得好像有些问题 后来改用TList,比较正常
D databox Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-12 #7 如果要删中间的,你就用Tlist来管理,如果只删除最后的,就用数组,SetLength(Arr,?)
Y YoungSun Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-12 #8 我一般都用TList,很好管理.动态数组不能作为参数传给过程或函数,即在函数中不能改变 数组的长度,很麻烦.
B beta Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-12 #10 减少中间一条:把该条往后的记录全部前移一条,然后 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;
减少中间一条:把该条往后的记录全部前移一条,然后 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;