如何将参数(Tmemorystream)通过转换成OleVariant类型传给中间件的接口方法。(100分)

  • 主题发起人 主题发起人 Adang
  • 开始时间 开始时间
服务器端:
function TShowGraphSvr.GetData: OleVariant;
var MS: TMemoryStream;
Len: Integer;
P: Pointer;
begin
MS := TMemoryStream.Create;
try
MS.LoadFromFile('C:/SCANDISK.LOG');
//MS.LoadFromFile('D:/Documents and Settings/Administrator/Mydo
cuments/My Pictures/Cars/xantia_1_p1.jpg');
Len := MS.Size;
Result := VarArrayCreate([0, Len-1], varByte);
P := VarArrayLock(Result);
MS.ReadBuffer(P^, Len);
finally
VarArrayUnlock(Result);
MS.Free;
end;
end;

客户端:
procedure TForm1.Button1Click(Sender: TObject);
var Obj: IShowGraphSvr;
V: Variant;
P: Pointer;
Len: Integer;
S: String;
begin
Obj := CoShowGraphSvr.Create;
V := Obj.GetData;
P := VarArrayLock(V);
try
Len := VarArrayHighBound(V, 1) - VarArrayLowBound(V, 1)+1;
SetLength(S, Len);
Move(P^, S[1], Len);
finally
VarArrayUnlock(V);
end;
Memo1.Text := S;
end;

如果你需要完整的源代码,我可以发给你(包括传输图片的)。
 
后退
顶部