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

前端之家收集整理的这篇文章主要介绍了delphi – 如何在记录中声明固定值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何声明一个具有一些固定值的记录.我需要使用这种模式发送数据:字节($FF)-Byte(0..250)-Byte(0..250).我正在使用记录,我想让它的第一个值保持不变,这样它就不会搞砸了.
如: @H_502_3@TPacket = record InitByte: byte; // =255,constant FirstVal,SecondVal: byte; end;

解决方法

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

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

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

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

@H_502_3@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,r.SecondVal])); end;

已更新,包括嵌套类型范围0..250

原文链接:https://www.f2er.com/delphi/101954.html

猜你在找的Delphi相关文章