gpt4 book ai didi

delphi - 如何在记录中声明固定值?

转载 作者:行者123 更新时间:2023-12-03 14:50:41 50 4
gpt4 key购买 nike

我想知道如何声明具有一些固定值的记录。我需要使用以下模式发送数据:Byte($FF)-Byte(0..250)-Byte(0..250)。我正在使用 record 来实现这一点,我希望它的第一个值保持不变,这样就不会弄乱。如:

TPacket = record
InitByte: byte; // =255, constant
FirstVal,
SecondVal: byte;
end;

最佳答案

您不能依赖构造函数,因为与类相反,记录不需要使用它们,隐式使用默认的无参数构造函数。

但是您可以使用常量字段:

type
TPacket = record
type
TBytish = 0..250;
const
InitByte : Byte = 255;
var
FirstVal,
SecondVal: TBytish;
end;

然后将其用作常规记录,但您没有(也不能)更改 InitByte 字段。
FillChar 保留常量字段并按预期运行。

procedure TForm2.FormCreate(Sender: TObject);
var
r: TPacket;
begin
FillChar(r, SizeOf(r), #0);
ShowMessage(Format('InitByte = %d, FirstVal = %d, SecondVal = %d', [r.InitByte, r.FirstVal,r.SecondVal]));
// r.InitByte := 42; // not allowed by compiler
// r.FirstVal := 251; // not allowed by compiler
r.FirstVal := 1;
r.SecondVal := 2;
ShowMessage(Format('InitByte = %d, FirstVal = %d, SecondVal = %d', [r.InitByte, r.FirstVal,r.SecondVal]));
end;

更新以包含嵌套类型范围0..250

关于delphi - 如何在记录中声明固定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726292/

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