delphi – 如何使用bitbit-operator来控制对象状态?

delphi – 如何使用bitbit-operator来控制对象状态?,第1张

概述我想创建轻型对象数据包以在客户端和服务器应用程序之间传递. 这是一个如此简单的任务,我只能控制1个字节,所以 一个字节中的每个位都有不同的含义, 仅使用位 0 = False 1 = True Itens我现在需要: 1 - Loaded from database 2 - Persisted3 - Changed4 - Marked to Delete5 -6 - 7 - Null 我想创建轻型对象数据包以在客户端和服务器应用程序之间传递.

这是一个如此简单的任务,我只能控制1个字节,所以
一个字节中的每个位都有不同的含义,

仅使用位

0 = False 1 = True

Itens我现在需要:

1 - Loaded from database 2 - Persisted3 - Changed4 - Marked to Delete5 -6 - 7 - Null Value 8 - Read Only1) How do I use bit operators in Delphi to check each bit value? 2) How do I set the bit Values?

在所有帮助之后,我会使用下一个Set

TStateType = (    stLoaded    = 0,// loaded from persistance    stNative    = 2,// value loaded and converted to native type    stPersisted = 3,// saved    stChanged   = 4,// object or member changed    stToDelete  = 5,// marked to delete    stReadonly  = 6,// read only object,will not allow changes    stNull      = 7    // value is null  );  TState = Set of TStateType;

对于流 – >持久性,这将是使用的记录:

TDataPackage = record    Data: TBytes;    TypeInfo: TMetaInfo;    State: Byte;    Instance: TBuffer;  end;

谢谢大家,感谢所有的答案和评论.

解决方法 我真的为此使用了一套.但是,我看到你真的想要一个字节.在任何地方使用集合,然后在最后将类型转换为一个字节.

barry Kelly指出,这种解决方案需要更少的打字,支持标准的delphi *** 作符并且不会带来任何性能损失.

procedure Test;type  TSetValues = (    TSetValue1   = 0,TSetValue2   = 1,TSetValue4   = 2,TSetValue8   = 3,TSetValue16  = 4,TSetValue32  = 5,TSetValue64  = 6,TSetValue128 = 7  );  TMySet = set of TSetValues;var  myValue: byte;  mySet: TMySet;begin  mySet := [TSetValue2,TSetValue16,TSetValue128];  myValue := byte(mySet);  ShowMessage(IntToStr(myValue)); // <-- shows 146end;
总结

以上是内存溢出为你收集整理的delphi – 如何使用bit / bit-operator来控制对象状态?全部内容,希望文章能够帮你解决delphi – 如何使用bit / bit-operator来控制对象状态?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1272515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存