当调用的时候,出现variant is not an array错误
客户端在线程中调用如下函数
var
DataRequestMsgTmp: TDataRequestMsg;
V: OleVariant;
MyBuffer: Pointer;
begin
DataRequestMsgTmp.MsgID := Msg_SaveRecordInfo;
Move(pData^, DataRequestMsgTmp.pRData, SizeOf(TRecordData));
V := VarArrayCreate([0, SizeOf(TDataRequestMsg)], VarByte);
MyBuffer := VarArrayLock(V);
Move(DataRequestMsgTmp, MyBuffer^, SizeOf(TDataRequestMsg));
VarArrayUnlock(V);
CustomerData.ClientDS.Close;
CustomerData.ClientDS.DataRequest(V);服务端
function TDataConnectModule.DataSetProviderOPDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
var
intA: Integer;
MyBuffer: Pointer;
DataRequestMsgTmp: TDataRequestMsg;
strResult: String;
V: OleVariant;
begin
//数据解开
MyBuffer := VarArrayLock(Input);
Move(MyBuffer^, DataRequestMsgTmp, SizeOf(TDataRequestMsg));
VarArrayUnlock(Input);
end;
客户端在线程中调用如下函数
var
DataRequestMsgTmp: TDataRequestMsg;
V: OleVariant;
MyBuffer: Pointer;
begin
DataRequestMsgTmp.MsgID := Msg_SaveRecordInfo;
Move(pData^, DataRequestMsgTmp.pRData, SizeOf(TRecordData));
V := VarArrayCreate([0, SizeOf(TDataRequestMsg)], VarByte);
MyBuffer := VarArrayLock(V);
Move(DataRequestMsgTmp, MyBuffer^, SizeOf(TDataRequestMsg));
VarArrayUnlock(V);
CustomerData.ClientDS.Close;
CustomerData.ClientDS.DataRequest(V);服务端
function TDataConnectModule.DataSetProviderOPDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
var
intA: Integer;
MyBuffer: Pointer;
DataRequestMsgTmp: TDataRequestMsg;
strResult: String;
V: OleVariant;
begin
//数据解开
MyBuffer := VarArrayLock(Input);
Move(MyBuffer^, DataRequestMsgTmp, SizeOf(TDataRequestMsg));
VarArrayUnlock(Input);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货