Задача: есть N элементов в строке. Разделитель — запятая. Надо пройтись по списку и удалить элементы, которые не подходят по условию. Использовать TStringDynArray.

Хотелось бы использовать TStringDynArray, потому что с ним просто удобно. Чтобы не заморачиваться с размерностью массива и обойти ситуацию, что изначальная строка — пустая, использовал такой код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program TestDynArrayDeleteItem;
{$APPTYPE CONSOLE}
uses
  System.SysUtils,
  System.Types,
  System.StrUtils;
var
  TmpArr: TStringDynArray;
begin
  TmpArr := SplitString('1,2,3,4,5', ',');
  for var i := High(TmpArr) downto Low(TmpArr) do
    if TmpArr[i] = '3' then
      Delete(TmpArr, i, 1);
  Writeln(String.Join(',', TmpArr));
  Readln;
end.

Работает быстро, для задачи быстрого изменения массива до нескольких десятков элементов — то, что надо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *