// *** before: ***
// Insert and Delete worked on strings only. For an array the elements
// were moved by hand and the length adjusted afterwards
var
A: TArray<Integer>;
I: Integer;
begin
// remove the element at index 2
for I := 2 to High(A) - 1 do
A[I] := A[I + 1];
SetLength(A, Length(A) - 1);
end;
// *** in version XE7: ***
var
A: TArray<Integer>;
begin
A := [1, 2, 3, 4, 5, 6];
Delete(A, 2, 1); // 1 2 4 5 6 - one element at index 2
Insert([8, 9], A, 4); // 1 2 4 5 8 9 6 - a whole array at index 4
Insert(0, A, 0); // a single value at the front
// the same two intrinsics keep working on strings
end;