Как вернуть новый массив из метода?
Задача: написать функцию или процедуру, для того чтобы удалить элемент из массива, по индексу 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));