gpt4 book ai didi

delphi - 记录在记录中(无法初始化)

转载 作者:行者123 更新时间:2023-12-03 15:18:04 24 4
gpt4 key购买 nike

我有 2 条这样的记录:

TYPE
TRecord2= packed record
i2: Integer;
end;

TRecord1= packed record
i1: Integer;
R2: TRecord2;
end;

.

我想将记录字段初始化为零,但我不想使用 FillMemory,因此我声明了 2 个常量记录,在其中初始化字段。

CONST
Record2c: TRecord2=
(
i2: 0;
);

Record1c: TRecord1=
(
i1: 0;
R2: Record2c; <------- error line
);

但是,我无法将 Record2c 分配给 R2 字段。编译器显示:E2029 '(' 预期,但发现标识符 'Record2c'。

但这可行(如果我注释有错误的行):

procedure test;
var Record1: TRecord1;
begin
Record1:= Record1c; // initialize variable by associating the constant to it
end

那么,如何初始化 R2 字段?

最佳答案

只能用真正的常量来初始化常量。真正的常量没有类型——它们是类型常量。请参阅Declared Constants在德尔福文档中。代码中的 Record2c 是一个类型常量,因此不能在 const 表达式中使用,例如初始化 Record1c 所需的表达式。您只需内嵌 Record1c.R2 的定义:

const
Record1c: TRecord1 = (
i1: 0;
R2: (i2: 0;);
);

当您注释掉错误行时,您会将 R2 字段默认初始化为零。

关于delphi - 记录在记录中(无法初始化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com