怎么将记录型数(Record)据转换成OleVariant类型数据?(200分)

Z

zfine

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层应用中,客户端想把记录型(Record)数据转换成OleVariant,再传到Midas服务器
去。。那位老师指点一下。。谢谢!
 
你先定义一个变量为olevariant类型的,然后再将客户端的数据赋值给这个变量,最后将这个变量传到中间层,
 
record可以先在服务器端定义
 
谢谢大家。。不过还是不知道怎么样将一个记录类型的所有数据转换成一个OleVariant数据
 
如果是三层的话,TClientDataSet有个属性data,是个OleVariant型,里面的内容就是
整个数据集的内容。
 
随便找了一段,Record和Component是一个意思
function ComponentToVariant(AComponent: TComponent): OleVariant;
var
BinStream: TMemoryStream;

Data: Pointer;
begin

BinStream := TMemoryStream.Create;

try
BinStream.WriteComponent(AComponent);
result := VarArrayCreate([0, BinStream.Size-1], varByte);
Data := VarArrayLock(result);

try
Move(BinStream.Memory^, Data^, BinStream.Size);
finally
VarArrayUnlock(result);
end;

finally
BinStream.Free;
end;

end;

function VariantToComponent(AValue: OleVariant): TComponent;
var
BinStream: TMemoryStream;
Data: Pointer;
begin

BinStream := TMemoryStream.Create;
try
Data := VarArrayLock(AValue);
try
BinStream.WriteBuffer(Data^, VarArrayHighBound(AValue, 1)
+1);
finally
VarArrayUnlock(AValue);
end;

BinStream.Seek(0, soFrombegin
ning);
result := BinStream.ReadComponent(nil);
finally
BinStream.Free;
end;

end;

 
接受答案了.
 
顶部