program MethodsCall;
uses
sysutils,
ua.client,
ua.buildintypes;
function VarArrayToUA(A: TArray<variant>): uaBaseDataTypeArray;
var
i : integer;
begin
Setlength(result,Length(A));
for i := 0 to Length(A)-1 do
result[i] := uaVariant.createScalar(A[i],uaVariant.VariantToUADatatype(A[i]));
end;
var
OPCClient : TdOPCUAClient;
InVarParams : TArray<variant>;
OutParams : uaBaseDataTypeArray;
begin
OPCClient := TdOPCUAClient.Create(nil);
OPCClient.Url := 'opc.tcp://opcuaserver.com:48010';
OPCClient.Active := true;
InVarParams := [10.01,20.02];
write(format('Multiply %s X %s = ',[InVarParams[0], InVarParams[1]]));
OutParams:= OPCClient.MethodCall('','ns=2;s=Demo.Method.Multiply',VarArrayToUA(InVarParams));
writeln(format('%.f',[OutParams[0].ToType<uadouble>]));
writeln('Press Enter to exit');
Readln;
OutParams[0].Free;
OPCClient.Free;
end.