delphi – 如何使用bit / bit-operator来控制对象状态?
发布时间:2020-12-15 09:48:42 所属栏目:大数据 来源:网络整理
导读:我想创建轻型对象数据包以在客户端和服务器应用程序之间传递. 这是一个如此简单的任务,我只能控制1个字节,所以 一个字节中的每个位都有不同的含义, 仅使用位 0 = False 1 = True Itens我现在需要: 1 - Loaded from database 2 - Persisted3 - Changed4 - Ma
我想创建轻型对象数据包以在客户端和服务器应用程序之间传递.
这是一个如此简单的任务,我只能控制1个字节,所以 仅使用位 0 = False 1 = True Itens我现在需要: 1 - Loaded from database 2 - Persisted 3 - Changed 4 - Marked to Delete 5 - 6 - 7 - Null Value 8 - Read Only 1) 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 146 end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |