arrays - Delphi XE6,带有 boolean 成员字段的记录的3D数组,不会建立

标签 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 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;

关于arrays - Delphi XE6,带有 boolean 成员字段的记录的3D数组,不会建立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492264/

相关文章:

c - 相对于由前两个数组组成的已排序的第三个数组重新排列一对数组

c - 按位|在二维数组 C

Delphi 10 - 删除主数据时如何自动删除明细记录?

java - 有人可以帮我解决我的代码错误吗?

c - clang 和 gcc 之间的行为差​​异?

C# 编译器命令行错误

java - 将整数对象的 ArrayList 转换为 int 数组?

java - 异常 : java. lang.ArrayIndexOutOfBoundsException

delphi - 如何在 DirectShow 样本采集器的 "double"时间戳和 FillBuffer REFERENCE_TIME 之间进行转换?

Delphi - 通用 TList 排序