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

wzd801027 2003-05-14 12:59:54
我在服务器端定义了一个如下的‘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'类型那?





...全文
6 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
采用olevariant指针传递
回复
hnxyy 2003-07-04
mark
回复
dolphin2001 2003-07-03
使用OleVariant来传递,具体转化代码请看下面的例子:

TARec=record
a:widestring;
b:widestring;
c:widestring;
end


// TARec ---> Variant
function RecordToVariant(value:TARec):OleVariant;
var
P:Pointer;
begin
Result := VarArrayCreate([0,sizeof(TARec)],varByte);
P := VarArrayLock(Result);
Move(value,P^,sizeof(P));
VarArrayUnlock(Result);
end;


// OleVariant ----> TARec
function VariantToRecord(value:OleVariant):TARec;
var
P:Pointer;
begin
P:= VarArrayLock(value);
Move(P^,Result,sizeof(TARec));
VarArrayUnlock(value);
end;

回复
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
在客户端同样定义此类型。在服务器端将此类型的变量值赋给olevariant类型的返回值,在客户端直接赋值给此类型的变量即可。
就是这么一个过程:(服务器)tTestAdvice-->(服务器)olevariant(返回值)-->(客户端)tTestAdvice
回复
人生加油站 2003-05-14
没有这种方式,要不的话就不用midas了。
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

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