Delphi 为什么数组';是谁的名字而不是括号?
访问数组中的元素时,方括号的用法如下:Delphi 为什么数组';是谁的名字而不是括号?,delphi,syntax,Delphi,Syntax,访问数组中的元素时,方括号的用法如下: {'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].); 在数组名称后面加括号是什么意思,如在PBox(someNu
{'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].);
PBox(someNumber)
中?这是访问数组元素的另一种方法吗是的,现在我知道你在做什么了 事实上,
(.
和)
仅仅是在Delphi中编写[
和]
的替代方法(但非常罕见!)
如果PBox
是一个数组,那么PBox[a]
(或者,相当于PBox(.a.)
)将要求a
为整数,对吗?如果SBox1[x]
和SBox2[Y]
是整数,那么它们的位或也是整数。(按位或
是一种取两个整数并返回一个新整数的操作。)因此,PBox(.SBox1[X]或SBox2[Y])
是(SBox1[X]或SBox2[Y])
数组中的第个元素PBox
,即整数。因此,计算结果
和该整数之间的按位或
是有意义的,这就是所做的:
Result := Result or PBox(.SBox1[X] or SBox2[Y].);
我花了将近一分钟才看到这里发生了什么!(.
写入[
的方式非常少见!使用按位或来计算数组的索引!作为“noob”也是非常少见的,您真的应该开始学习比这简单得多的东西!此外,PBox
是整数数组的一个非常糟糕的名称,因为P
前缀通常表示指针类型,例如PInteger
(=^integer
)@Andreas:你以前见过吗?我从'98年开始使用Delphi,从未见过使用(.
)索引的数组。按位部分我也从未见过,但如果代码使用某些API,则按位或
将需要设置标志。@Fabrico:我从未在实际代码段中见过(.
),但我知道这一点(虽然一开始我把它误认为是(*
,编写{
的另一种方式)。按位或是每个程序员都知道的。正如你所说,它可能最常用于在“位图”中组合标志,但如果你使用低级的东西,应用程序远不止这些。我从来没有见过按位或
作为数组索引,不过…@Andreas:我在DES算法的实现中看到过这一点,pbox代表置换框。按位或
在Win API编程中非常常见(这在VCL的一些低级方法中很常见)-但是在按位表达式上对数组进行索引是你每天都看不到的…;-)非常感谢Andreas..现在我明白了:)现在字符串的WeirdLookingArray:array(.1..10.);
有意义了!