Как вернуть новый массив из метода?

Задача: написать функцию или процедуру, для того чтобы удалить элемент из массива, по индексу n при этом массив нужно изменить, чтобы он был без пустого элемента. Как вернуть новый массив?

`procedure DeleteIndexElm(var arr:arrInteger;DelIndex:integer);
var newArrInt:arrInteger;i,j:integer;
begin
    if length(arr) < 1  then
        exit;
    j:=1;
    SetLength(newArrInt,length(arr)-1);
    for i := 1 to length(arr) do
    begin
        if i <> DelIndex then
        begin
            newArrInt[j] := arr[i];
            j:=j+1;
        end;
    end;
    SetLength(arr,Length(newArrInt));
    arr:=newArrInt;
end;`

Ответы (1 шт):

Автор решения: Igor
type
  TArrayOfInteger: array of integer;

procedure DeleteArrayElement(var arr: TArrayOfInteger, index: integer);
begin
  ...
  SetLength(arr, Length(arr) - 1);
  ...
end;

процедура работает как-то некорректно.

Индексация динамических массивов начинается с нуля.

j := 0;
SetLength(newArrInt, Length(arr) - 1);
for i := 0 to Length(arr) - 1 do
begin
  ...
end;
//SetLength(arr,Length(newArrInt));
→ Ссылка