D
databox
Unregistered / Unconfirmed
GUEST, unregistred user!
我用类似于下面这种方法,传送一个类型可以,但我要传一个动态数组类型,又怎么做呢?
我想,主要是Move那儿,我不太清楚如何做。请大伙儿帮帮忙。
类型例子。
type
rAccReg = Record
sValue: String;
cType: Integer;
end;
type
rAccountReg = Record
AccReg: array[0..1023] of rAccReg;
AccNum: Integer;
end;
我要传一个array of rAccountReg到服务器,然后服务器再展开得到这些值。
客户端将结构变为Variant:
V:Variant;
Pointer;
V:=VarArrayCreate([0,Sizeof(rAccountReg)],varByte);
P:=VarArrayLock(V);
Move(AccountReg,P^,Sizeof(rAccountReg));
VarArrayUnLock(V);
调用 mTransaction(UserName,AccountReg);
服务器端变回来:
procedure TCliManagerApp.mTransaction(const userName: WideString;
vAccountReg: OleVariant);
var AccountReg:rAccountReg;
begin
P:=VarArrayLock(vAccountReg);
Move(P^,AccountReg,Sizeof(rAccountReg));
VarArrayUnLock(vAccountReg);
end;
我想,主要是Move那儿,我不太清楚如何做。请大伙儿帮帮忙。
类型例子。
type
rAccReg = Record
sValue: String;
cType: Integer;
end;
type
rAccountReg = Record
AccReg: array[0..1023] of rAccReg;
AccNum: Integer;
end;
我要传一个array of rAccountReg到服务器,然后服务器再展开得到这些值。
客户端将结构变为Variant:
V:Variant;
Pointer;
V:=VarArrayCreate([0,Sizeof(rAccountReg)],varByte);
P:=VarArrayLock(V);
Move(AccountReg,P^,Sizeof(rAccountReg));
VarArrayUnLock(V);
调用 mTransaction(UserName,AccountReg);
服务器端变回来:
procedure TCliManagerApp.mTransaction(const userName: WideString;
vAccountReg: OleVariant);
var AccountReg:rAccountReg;
begin
P:=VarArrayLock(vAccountReg);
Move(P^,AccountReg,Sizeof(rAccountReg));
VarArrayUnLock(vAccountReg);
end;