标题基本概括了所有内容.我正在使用TClientDataset来存储一个对象数组,其中一个对象的成员被定义为一组枚举类型.据我所知,Delphi集是位域,其大小可以在1到32个字节之间变化,具体取决于它们包含多少数据,而Delphi没有定义TSetField.我应该使用什么样的字段来加载这个值?
解决方法
您可以使用TBytesField或TBlobField
ClientDataSet1MySet:TBytesField,Size = 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;