@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.