三层中如何在服务器与客户端之间传输自定义的'Record'类型??????

wzd801027 2003-05-14 01:00:29
我在服务器端定义了一个如下的‘RECORD’数据类型
// Declaration of structures, unions and aliases.
// *********************************************************************//
PUserType1 = ^tTestAdvice; {*}

tTestAdvice = packed record
serialno: string;
inhosRegisterNo: string;
subjectCode: string;
isMedicine: string;
execDepartmentCode: string;
execDepartmentName: string;
drugHouseCode: string;
drugHouseName: string;
doctorCode: string;
doctorName: string;
end;

并且把他作为一个函数的入参:
procedure groupData(var value: tTestAdvice); safecall;

请问我在客户端如何定义数据类型???如何引用服务器端定义的'tTestAdvice'类型那?





...全文
11 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
virtualmfc 2003-05-16
同意soaringsouth(栈桥捉鳖) ,如果你要引用服务器端的结构类型,请在类型库中声明此结构,然后在客户端引用服务器端的类型库文件。
回复
yzykjh 2003-05-15
这样实现
var
vData: OleVariant;
arrayList: array of tstringlist;
i: Integer;
begin
vData:=VarArrayCreate([Low(arrayList),high(arrayList)],VarVariant);
for i:=Low(arrayList) to high(arrayList) do
vData[i]:=arrayList[i].Text;
end;

服务端再转化过来

if VarAsArray(vData) then
for i:=VarArrayLowBound(vData,1) to VarArrayHighBound(vData,1) do
arrayList[i].Text:=vData[i];
回复
leapmars 2003-05-15
需要在 type library 中定义此结构,但是此结构的各个域的类型应该是自动化兼容的,因此不能定义成 string ,应该是 BSTR,其实就是 WideString。 当客户端导入了类型库后,就有了此结构的类型定义。(该定义就在 *_TLB.pas 文件中)
回复
888888888888 2003-05-15
关注
回复
soaringsouth 2003-05-14
soaringsouth@hotmail.com
QQ:80405046
回复
soaringsouth 2003-05-14
在客户端同样定义此类型。在服务器端将此类型的变量值赋给olevariant类型的返回值,在客户端直接赋值给此类型的变量即可。
就是这么一个过程:(服务器)tTestAdvice-->(服务器)olevariant(返回值)-->(客户端)tTestAdvice
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2003-05-14 01:00
社区公告
暂无公告