你用的是Delphi6,要引用Variants单元;server: procedure TRemoteDataModule.GetSome(var Data: OleVariant); begin VarClear(Data); //客户端没有传数据过来,那就先Clear Data := VarArrayCreate([0, Count], varVariant); Data[]赋值. //OK end;function TRemoteDataModule.GetSome: OleVariant; begin //将上面的Data改为Result即可 end;client: procedure Proc1 var data: OleVariant; begin SocketConnection1.AppServer.GetSome(Data); //or Data := SOcketConnection1.AppServer.GetSome; end;
我使用的方法如下: Server(COM/DCOM程序)端: procedure TTestDCOM.Send(Size: Integer; D1: OleVariant); type TData=array [0..999] of Byte; Var Data:TData; i:Integer; begin for i:=0 to Size-1 do begin Data[i]:=D1[i]; end; end; Cleint端: Var D1:OleVariant; begin D1:=VarArrayCreate([0,99],varByte); //此处报错!!! { D1[1]:=45; .... //将值存入D1中 } S.Send(99,D1); //S是TestDCOM对象 end;
procedure TRemoteDataModule.GetSome(var Data: OleVariant);
begin
VarClear(Data); //客户端没有传数据过来,那就先Clear
Data := VarArrayCreate([0, Count], varVariant);
Data[]赋值.
//OK
end;function TRemoteDataModule.GetSome: OleVariant;
begin
//将上面的Data改为Result即可
end;client:
procedure Proc1
var
data: OleVariant;
begin
SocketConnection1.AppServer.GetSome(Data);
//or
Data := SOcketConnection1.AppServer.GetSome;
end;
Server(COM/DCOM程序)端:
procedure TTestDCOM.Send(Size: Integer; D1: OleVariant);
type
TData=array [0..999] of Byte;
Var
Data:TData;
i:Integer;
begin
for i:=0 to Size-1 do begin
Data[i]:=D1[i];
end;
end;
Cleint端: Var
D1:OleVariant;
begin
D1:=VarArrayCreate([0,99],varByte); //此处报错!!!
{
D1[1]:=45;
.... //将值存入D1中 }
S.Send(99,D1); //S是TestDCOM对象
end;
望各位给予赐教!