delphi - 在数据集中存储 Delphi 集的最佳方法是什么?

标签 delphi set dataset

标题几乎说明了一切。我使用 TClientDataset 来存储对象数组,其中一个对象具有定义为枚举类型集合的成员。据我了解,Delphi 集是位字段,其大小可以在 1 到 32 字节之间变化,具体取决于它们包含的数据量,并且 Delphi 没有定义 TSetField。我应该使用什么类型的字段来加载这个值?

最佳答案

您可以使用 TBytesField 或 TBlobField

ClientDataSet1MySet:TBytesField,大小=32

var
  MySet: set of Byte;
  Bytes: array of Byte;
begin
  MySet := [1, 2, 4, 8, 16];

  // Write
  Assert(ClientDataSet1MySet.DataSize >= SizeOf(MySet), 'Data field is too small');

  SetLength(Bytes, ClientDataSet1MySet.DataSize);
  Move(MySet, Bytes[0], SizeOf(MySet));
  ClientDataSet1.Edit;
  ClientDataSet1MySet.SetData(@Bytes[0]);
  ClientDataSet1.Post;

  // Read
  SetLength(Bytes, ClientDataSet1MySet.DataSize);
  if ClientDataSet1MySet.GetData(@Bytes[0]) then
    Move(Bytes[0], MySet, SizeOf(MySet))
  else
    MySet := []; // NULL
end;

关于delphi - 在数据集中存储 Delphi 集的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/347592/

相关文章:

performance - 计算例程的速度?

xml - 将 XML 节点绑定(bind)到 TreeView 节点

sorting - 具有许多已定义子集的有序集合的数据结构;按相同顺序检索子集

java - 当 "Set"不合适时,是否有替代 NavigableSet 的方法?

C# WinForms - 如何将更新从 DataGridView 发送到数据库

python - python上的远程数据库访问

delphi - 如何使用Delphi 2009调用Microchip PIC USB DLL

delphi - 如何消除 DirectShow 过滤器链中 1 秒的延迟? (使用Delphi和DSPACK)

java - 无法在 Java 的 CopyOnWriteArraySet 中删除或找到对象

python - TensorFlow:将 tf.Dataset 转换为 tf.Tensor