Arrays Delphi XE6,带有布尔成员字段的三维记录数组,赢得';t构建
简单的例子:Arrays Delphi XE6,带有布尔成员字段的三维记录数组,赢得';t构建,arrays,delphi,compiler-errors,boolean,record,Arrays,Delphi,Compiler Errors,Boolean,Record,简单的例子: type TGm = record Rm,Nc,Sc,Wc,Ec,Su,Sd:boolean; end; var Dm: Array[1..20] of Array[1..20] of Array[1..20] of TGm; Gm: TGm; ... if (Dm(z,y-1,x).Ec) then Gm.Wc := TRUE; 当我尝试构建时,最后一行将被标记,并显示两个错误: '$1' does not contain a member nam
type
TGm = record
Rm,Nc,Sc,Wc,Ec,Su,Sd:boolean;
end;
var
Dm: Array[1..20] of Array[1..20] of Array[1..20] of TGm;
Gm: TGm;
...
if (Dm(z,y-1,x).Ec) then Gm.Wc := TRUE;
当我尝试构建时,最后一行将被标记,并显示两个错误:
'$1' does not contain a member named 'Ec'
Type of expression must be BOOLEAN
我是不是错过了一些非常简单的东西
是的,我正在生成一个地牢;-) 在需要括号的地方使用括号。它应该是这样的:
if Dm[z][y-1][x].Ec then Gm.Wc := TRUE;
我建议改为使用单个多维数组:
var
Dm: Array[1..20, 1..20, 1..20] of TGm;
Gm: TGm;
...
if Dm[z,y-1,x].Ec then Gm.Wc := TRUE;
括号。。。非常简单,是的。编译器错误很奇怪…@Sertac:我猜编译器认为它是某种匿名类型,内部称为
$1
,可能是Dm类型的内部主行。我想这是因为声明是array[]of array[]of array[]of…
,这是不寻常的。通常情况下,您有一个数组[…,…]of…。您能解释一下第一条编译器消息的含义吗?我很困惑,通常delphi编译器消息非常友好…我无法重现您在我的XE6中显示的错误。该行失败,改为“E2066缺少运算符或分号”。