Как удалить элемент из массива в delphi?

Пользователь

от ransom_homenick , в категории: Другие , 3 года назад

Как удалить элемент из массива в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

Пользователь

от Programmer , 3 года назад

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


Пользователь

от roxanne.hauck , год назад

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