Почему после имени массива вместо скобок появляются круглые скобки и точки?

при доступе к элементу в массиве квадратные скобки используются следующим образом:

{'X is an int and Numbers is an int array'}
X := Numbers[8];

однако, читая чужой код, я иногда нахожу следующий синтаксис:

{'PBox , SBox1 , SBox2 are arrays of int , And X,Y are ints'}
Result := Result or PBox(.SBox1[X] or SBox2[Y].);
  1. Что означают скобки после имени массива, как в PBox(someNumber)? Это еще один способ доступа к элементу array?
  2. что делает "."до SBox1 и после SBox2 означает? Оба sbox1 и SBox2 являются массивами. Код компилируется без ошибок, но я не знаю, для чего эти точки.

1 ответов


Да, теперь я вижу, что вы делаете.

в самом деле (. и .) являются просто альтернативными способами (но очень редко!) письма [ и ] в Делфи.

если PBox массив,PBox[a] (или, эквивалентно, PBox(.a.)) потребуется a чтобы быть целым числом, верно? И если SBox1[x] и SBox2[Y] являются целыми числами, так что побитовое or из них. (Побитовое or - это операция, которая принимает два целых числа и возвращает новое число.) Следовательно, PBox(.SBox1[X] or SBox2[Y].) - это (SBox1[X] or SBox2[Y]) - й элемент в массиве PBox, то есть целое число. Поэтому имеет смысл вычислить побитовое or между Result и это целое число, что и делается:

Result := Result or PBox(.SBox1[X] or SBox2[Y].);