gpt4 book ai didi

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

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

我有这个代码

type
TXSample = (xsType1, xsType2, xsType3, xsType4, xsType5, xsType6, 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, xsType4, xsType5, xsType6, xsTyp7];

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

最佳答案

如果你的集合永远不会超过 32 种可能性 ( Ord(High(TXSample)) <= 31 ),那么将集合类型转换为 Integer 就完全没问题了。并返回:

type
TXSamples = set of TXSample;
var
XSamples: TXSamples;
begin
ValueToStoreInDB := Integer(XSamples);
Integer(XSamples) := ValueReadFromDB;
end;

更具体地说:SizeOf(TXSamples)必须精确等于 SizeOf(StorageTypeForDB) 。因此,以下范围适用于 Ord(High(TXSample))打字时TXSamples至:

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

关于delphi - 如何保存/加载类型集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553510/

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