请教,有关于三层读流的问题了。高手帮忙。从 OLEVARAINT 到STEAM转换的问题 (100分)

  • 主题发起人 主题发起人 sbh410
  • 开始时间 开始时间
S

sbh410

Unregistered / Unconfirmed
GUEST, unregistred user!
当从服务器com+对象端传回 (DATA :OLEVARAINT)的类型的数据到CLIENTDATASET时,
MS:=CreateBlobStream(Clientdataset.FieldbyName('roletext'),bmRead);
这个也是对的。
但是当原来的构件读流就发生 STREAM READ ERROR的情况。
保存流都是对的,直接用连上去也对可以的,构件读流也是对。
就是COM+对象传回OLEVARAINT类型时,构件读流就错误了。
请教了,很急啊/

 
不懂你的意思。
如果单纯想将COM+返回的OLEVARIANT保存到流中,我一般这样用:
var
Buff:array of byte;
Mem :TMemoryStream;
begin
Buff:=AppServer.Method(ParamsList);
Mem:=TMemoryStream.Create;
Try
m.write(Buff[0],high(Buff)+1);
Other Statments...
finally
Mem.Free;
end;
end;
 
function VariantToStream(const Data: OleVariant;
var Stream: TMemoryStream): Boolean;
var
P: Pointer;
begin
Result := False;
P := VarArrayLock(Data);
try
try
Stream.Write(P^, VarArrayHighBound(Data,1) + 1);
Result := True;
except
end
finally
VarArrayUnlock(Data);
end;
end;
 
djdsz,哪里不懂我的意思?
 
后退
顶部