关于Variant Array 的问题求教

Zboy 2003-09-04 09:37:24
三层结构中应用服务器上有一接口定义如下:
....
procedure SaveCustomer(vData: OleVariant); dispid 3;
....

客户端调用该接口:
type
TCustomerRec = record
Name:string;
WorkCode:integer;
.....
end;

...

procedure SaveCustomerToServer(Customer:TCustomerRec);
var vCustomer:OleVariant;
p:Pointer;
begin
vCustomer:=VarArrayCreate([0,Sizeof(TCustomerRec)],varByte);
p:=VarArrayLock(vCustomer);
Move(Customer, p^, Sizeof(TCustomerRec));
VarArrayUnlock(vCustomer);
XXInterface.SaveCustomer(vCustomer);
//在这里调用接口时出错
end;

错误:EOleException "Mismatch in datapacket"

为什么这样不行??苦恼。
用ClientDataSet倒是可以解决这个问题,但是不想这么干。
是不是转换不对?万望赐教。
...全文
73 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zboy 2003-09-04
  • 打赏
  • 举报
回复
不是这个问题,我所有的String类型都是ShortString,(上面写漏了,应该是String[8])。

问题解决了,在于接口的实现部分怎么处理接收到的OleVariant。
lvloj 2003-09-04
  • 打赏
  • 举报
回复
type
TCustomerRec = record
Name:ShortString;
WorkCode:integer;
.....
end;
把所有的string改成ShortString.

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧