Присвоение фрагментов массива новому массиву - PullRequest
0 голосов
/ 24 февраля 2019

У меня неправильный синтаксис, но я не могу найти информативную страницу о правильном синтаксисе моего вопроса.У меня есть функция, над которой я работаю, которая принимает массив, и я хочу выполнить некоторые вычисления для среза этого массива, поэтому я решил просто создать массив среза из переданного массива, в частности, эти индексы.Может ли кто-нибудь помочь мне с синтаксисом здесь, потому что этот постоянно говорит мне missing ','

p1: UnboundArray(1 .. 15);
p1DataBits: UnboundArray(1 .. 7);
begin
    p1DataBits := (p1(3 | 5 | 7 | 9 | 11 | 13 | 15));
end;

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Другим решением без дорогой конкатенации является назначение прямого, явного выражения массива:

procedure Odds is
  type UnboundArray is array (Integer range <>) of Integer;
  p1: UnboundArray(1 .. 15);
  p1DataBits: UnboundArray(1 .. 7);
begin
  p1DataBits := (p1(3), p1(5), p1(7), p1(9), p1(11), p1(13), p1(15));
end;
0 голосов
/ 24 февраля 2019

Похоже, что вы хотите скопировать некоторые элементы одного массива в другой, используя slices .Поскольку ни один из элементов не является последовательным, вам, вероятно, было бы лучше агрегировать , показывать здесь или объединять требуемые элементы.

 p1DataBits : UnboundArray(1 .. 7) := p1(3) & p1(5) & p1(7) …;

Возможно, вы неправильно прочитали синтаксис для discrete_range ;в этом контексте символ | «разделяет альтернативные элементы», а не символ, представляющий литерал delimiter .

...