我试图从数组中删除项目。 阵列不是动态的!从静态数组中删除元素
我发现了很多关于如何为动态变量而不是静态变量的例子。距离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如果可用 –
fantaghirocco
您无法从静态数组中删除/删除元素。这就是静态的意思:元素的数量是固定的。您只能更改或重新排列这些值。 –
静态数组是静态的。 –