【发布时间】:2015-11-16 09:47:00
【问题描述】:
我正在尝试从数组中删除一个项目。 数组不是动态的!
我找到了很多关于如何为动态变体执行此操作的示例,但没有找到用于静态变体的示例。
delphi 示例:
var
A: array of integer;
begin
...
A:=[1,2,3,4];
Delete(A,1,2); //A will become [1,4]
...
end;
来自其他网站的示例:
type
TIntArray = array of Integer;
procedure DeleteArrayElement(var AArray: TIntArray; const AIndex: Integer);
begin
Move(AArray[AIndex + 1], AArray[AIndex], SizeOf(AArray[0]) * (Length(AArray) - AIndex - 1));
SetLength(AArray, Length(AArray) - 1);
end;
...
//call via
DeleteArrayElement(IntArray, 3);
...
我的数组被定义为 0 .. 11 所以这不是动态的(我猜)?
当我尝试使用 SetLength 函数时,它显示类型不兼容。
知道如何解决这个问题吗?
【问题讨论】:
-
如果要删除元素,请不要使用数组:如果可用,请使用 TList
-
您不能从静态数组中删除/移除元素。这就是静态的意思:元素的数量是固定的。您只能更改或重新排序值。
-
静态数组是静态的。