@ransom_homenick Салют!
Если массив статический то никак, можно просто затереть, сделать элемент пустым.
Если же массив динамический то задача выполнима, суть в том чтобы сместить оставшиеся элементы на оду позицию вверх и после этого изменить длину массива, убрав этим действием последний пустой элемент.
Примерно так
1 2 3 4 5 6 7 8 9 10 11 12 13 |
type TMyArr : array of double; ... procedure DeleteMasElem( var A : TMyArr; const Index : integer ); //Index это номер элемента который необходимо удалить var i, h : integer; begin h := High(A); if h = -1 then Exit; for i := Index to h - 1 do A[i] := A[i + 1]; SetLength(A, h); end; |
@ransom_homenick
Для удаления элемента из массива в Delphi можно использовать функцию Move, которая перемещает данные массива на указанное количество байтов.
Пример удаления элемента массива:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var MyArray: array of Integer; IndexToDelete, i: Integer; begin SetLength(MyArray, 5); MyArray[0] := 1; MyArray[1] := 2; MyArray[2] := 3; MyArray[3] := 4; MyArray[4] := 5; IndexToDelete := 2; // Удаляем третий элемент (индекс 2) for i := IndexToDelete + 1 to High(MyArray) do Move(MyArray[i], MyArray[i-1], SizeOf(Integer)); // Сдвигаем элементы после индекса удаленного элемента SetLength(MyArray, Length(MyArray) - 1); // Уменьшаем длину массива на 1 end; |
После выполнения кода, массив MyArray будет содержать элементы 1, 2, 4, 5.