在多层系统中怎么从应用服务器端传回一个记录类型到客户端?(50分)

  • 主题发起人 主题发起人 am2001
  • 开始时间 开始时间
A

am2001

Unregistered / Unconfirmed
GUEST, unregistred user!
type
Taa = record
a1: int;
a2: string;
end;
怎么传回到客户端?
 
转换成variant传递
var
s:Taa
d:variant;
d:=vararraycreate([0,1],varvariant);
d[0]:=s.a1;
d[1]:=s.a2;
 
樓上的是一種方法,還可以如下解決,傳數據前調用Packet將記錄型數據打包成Variant類型.
接收到后再調用Unpack將Variant解包成記錄型.
type
PMyRecord=^TMyRecord;
TMyRecord=record
A:Integer;
B:string[100];
end;

function Packet(R:TMyRecord):Variant;
var
P:Pointer;
begin
Result:=VarArrayCreate([0,SizeOf(TMyRecord)-1],VarByte);
P:=VarArrayLock(Result);
try
Move(R,P^,SizeOf(TMyRecord));
finally
VarArrayUnLock(Result);
end;
end;

procedure Unpack(V:Variant;var R:TMyRecord);
var
P:Pointer;
begin
P:=VarArrayLock(V);
try
Move(P^,R,SizeOf(TMyRecord));
finally
VarArrayUnlock(V);
end;
end;

或者,你還可以在服務器程序中的Type Library Editor中新增一种記錄類型.客戶端通過獲取類型庫來使用該類型.
 
可以在服務器程序中的Type Library Editor中新增一种記錄類型.客戶端通過獲取類型庫來使用該類型
这种方法怎么做呢?
 
RDataSet:OleVariant類型就可以了
客戶端用TClientDataSet.Data:=RDataSet 就可以了
 
多人接受答案了。
 
后退
顶部