加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何保存/加载集合类型?

发布时间:2020-12-15 10:14:51 所属栏目:大数据 来源:网络整理
导读:我有这个代码 type TXSample = (xsType1,xsType2,xsType3,xsType4,xsType5,xsType6,xsTyp7,xsType8); // up to FXSample30; ..private FXSample = Set of TXSample; ..published property Sample: TXSample read FXSample write FXSample; .. //if Sample ha
我有这个代码
type
  TXSample = (xsType1,xsType2,xsType3,xsType4,xsType5,xsType6,xsTyp7,xsType8); // up to FXSample30;  
..

private
  FXSample = Set of TXSample;  
..

published
  property Sample: TXSample read FXSample  write FXSample; 
..

  //if Sample has a value of
  Sample := [xsType2,xsTyp7];

我如何保存/加载Sample的属性?
我想保存在数据库中。
可能吗?

解决方法

如果您的集合永远不会超过32个可能性(Ord(High(TXSample))= 31),则将集合类型转换为整数并返回是非常好的:
type
  TXSamples = set of TXSample;
var 
  XSamples: TXSamples;
begin
  ValueToStoreInDB := Integer(XSamples);
  Integer(XSamples) := ValueReadFromDB;
end;

要更具体:SizeOf(TXSamples)必须与SizeOf(StorageTypeForDB)精确相等。因此,当将TXSamples类型转换为以下时,以下范围适用于Ord(High(TXSample)):

> Byte:Ord(High(TXSample))< 8> Word:8< = Ord(High(TXSample))< 16> Longword:16< = Ord(High(TXSample))< 32> UInt64:32< = Ord(High(TXSample))< 64

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读