Podes hacerlo de esta manera.
Código Delphi
[-]
function EnviaInfoCDS(Tabla: TClientDataSet): OleVariant;
var
Info: OleVariant;
i: Integer;
begin
Info:= VarArrayCreate([0, Tabla.FieldCount], varVariant);
for i := 0 to Tabla.FieldCount -1 do
Info[i] := Tabla.Fields[i].Value;
Result:= Info;
end;
Y el result lo envias dentro de la función que tienes en el servidor, la variable que lo recibe debe ser de este tipo y ya asi te sirve.
En el servidor haces lo contrario a esta función para recibir el contenido de la variable me explico.
Ambos clientdataset deben tener la misma cantidad de campos.
Código Delphi
[-]
procedure RecibeInfoCDS(Info: OleVariant);
begin
for i := 0 to Tabla.FieldCount -1 do
Tabla.Fields[i].Value:= Info[i];
end;