Delphi XE3-将数据从一个TBytesField复制到另一个TBytesField

Delphi XE3-将数据从一个TBytesField复制到另一个TBytesField,delphi,delphi-xe3,Delphi,Delphi Xe3,我有一个ADO数据集(DataSet1),带有TBytesField,该字段的数据大小为12 我想将TBytesField数据复制到另一个具有数据大小为12的TBytesField的数据集 我使用下面给出的代码行将字段值从DataSet1复制到DataSet2: DataSet2.Fields[0].Value := DataSet1.Fields[0].Value. 这段代码在Delphi2009中运行,但是在迁移到DelphiXE3之后,它就不再运行了。在尝试设置值时,它会引发错误“Inv

我有一个ADO数据集(DataSet1),带有TBytesField,该字段的数据大小为12

我想将TBytesField数据复制到另一个具有数据大小为12的TBytesField的数据集

我使用下面给出的代码行将字段值从DataSet1复制到DataSet2:

DataSet2.Fields[0].Value := DataSet1.Fields[0].Value.
这段代码在Delphi2009中运行,但是在迁移到DelphiXE3之后,它就不再运行了。在尝试设置值时,它会引发错误“Invalid variant type”。 我尝试使用
GetData
SetData
,但出现了相同的错误

我认为在设置数据时Delphi XE3 ADODB代码有一个bug


有人遇到过这个问题吗?有什么建议吗?

您是否尝试使用分配:
DataSet2.Fields[0]。分配(DataSet1.Fields[0])?查看
TBinaryField
的源代码,它是
TBytesField
的祖先,我认为您必须尝试使用
.AsBytes
属性,如下所示:
DataSet2.Fields[0]。AsBytes:=DataSet1.Fields[0]。AsBytes。我不完全确定,所以我将此作为一条评论发布,如果您确认它有效,我将写一个答案。Embarcadero发布了buggy和XE2 Update 4中COM/OLE和变体的突破性更改。ds1 f0值的VarType是什么@JachGrate,我尝试在它之前使用assign和AsBytes。但同样的错误也出现了。然后我调试到ADODB中,我确信代码中的大小有问题。如果我将TBytesField大小设置为16,则它可以工作。