Files
lazarus-ccr/wst/trunk/tests/calculator/client/calc_client.pas
inoussa 4381e28da6 first import
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2006-08-26 00:35:42 +00:00

84 lines
2.4 KiB
ObjectPascal

program calc_client;
{$mode objfpc}{$H+}
uses
Classes, SysUtils,
service_intf,
base_soap_formatter, soap_formatter, binary_formatter,
ics_tcp_protocol,
calculator, calculator_proxy, TypInfo;
Var
calcObj : ICalculator;
i, j, k : Integer;
rk : TBinaryArgsResult;
vA : TBinaryArgsResultArray;
f : IFormatterClient;
s : TStream;
msgProt : string;
begin
{ vA := TBinaryArgsResultArray.Create();
vA.SetLength(2);
f := TBinaryFormatter.Create() as IFormatterClient;
f.BeginCall('pr','trgt');
f.Put('xx',TypeInfo(TBinaryArgsResultArray),vA);
f.EndCall();
s:= TMemoryStream.Create();
f.SaveToStream(s);
f := Nil;
f := TBinaryFormatter.Create() as IFormatterClient;
s.Position := 0;
WriteLn('------------------------------------------');
WriteLn('------------------------------------------');
f.LoadFromStream(s);
ReadLn();
Exit;}
//Client
Write('Enter msg protocol :');
ReadLn(msgProt);
If Not( AnsiSameText(msgProt,'SOAP') Or AnsiSameText(msgProt,'binary') ) Then
msgProt := 'binary';
Writeln('USED Msg protocol = ',msgProt);
ICS_RegisterTCP_Transport();
rk := nil;
Try
Try
calcObj := TCalculator_Proxy.Create(
'ICalculator', // Target
msgProt,//'SOAP',//'binary', // Protocol Data
'TCP:Address=127.0.0.1;Port=1234;target=ICalculator' // Transport Data
);
WriteLn('Calculator test.');
Write('Enter A = '); ReadLn(i);
Write('Enter B = '); ReadLn(j);
k := calcObj.DivInt(i,j);
Write(' A / B = '); WriteLn(k);
rk := calcObj.AddInt(i,j);
WriteLn(Format(' ( %d %s %d ) = %d',[rk.Arg_A, rk.Arg_OP, rk.Arg_B, rk.Arg_R]));
WriteLn('----------------------------------------------');
vA := calcObj.DoAllOperations(i,j);
Try
For i := 0 To Pred(vA.Length) Do
WriteLn(Format(' ( %d %s %d ) = %d; OP=%s',[vA[i].Arg_A, vA[i].Arg_OP, vA[i].Arg_B, vA[i].Arg_R,GetEnumName(TypeInfo(TCalc_Op),Ord(vA[i].Arg_OpEnum))]));
Finally
vA.Free();
End;
Except
On E : ESOAPException Do Begin
WriteLn('Oups ( SOAP Exception ) :');
WriteLn(' Code=',E.FaultCode);
WriteLn(' String=',E.FaultString);
End;
On E : Exception Do Begin
WriteLn('Oups:');
WriteLn(E.Message);
End;
End;
Finally
rk.Free();
End;
ReadLn();
end.