110 lines
2.4 KiB
ObjectPascal
110 lines
2.4 KiB
ObjectPascal
unit Project14ClientMain;
|
|
|
|
{
|
|
|
|
By definition, you need the proper server to run:
|
|
- Project14Server.dpr for Named Pipes
|
|
- Project14ServerHttp.dpr for HTTP
|
|
- Project14ServerHttpWeak.dpr for HTTP/weak
|
|
|
|
}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF WINDOWS} Windows, Messages, {$ENDIF}
|
|
SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls,
|
|
SynCommons, mORMot, mORMotHttpClient,
|
|
Project14Interface;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
edtA: TEdit;
|
|
edtB: TEdit;
|
|
lblA: TLabel;
|
|
lblB: TLabel;
|
|
btnCall: TButton;
|
|
btnCancel: TButton;
|
|
lblResult: TLabel;
|
|
ComboProtocol: TComboBox;
|
|
procedure btnCancelClick(Sender: TObject);
|
|
procedure btnCallClick(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure ComboProtocolChange(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
Model: TSQLModel;
|
|
Client: TSQLRestClientURI;
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
{$ifndef FPC}
|
|
{$R vista.RES} // includes Win10 manifest - use .RES for linux cross-compilation
|
|
{$endif}
|
|
|
|
procedure TForm1.btnCancelClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TForm1.btnCallClick(Sender: TObject);
|
|
var a,b: integer;
|
|
err: integer;
|
|
I: ICalculator;
|
|
begin
|
|
val(edtA.Text,a,err);
|
|
if err<>0 then begin
|
|
edtA.SetFocus;
|
|
exit;
|
|
end;
|
|
val(edtB.Text,b,err);
|
|
if err<>0 then begin
|
|
edtB.SetFocus;
|
|
exit;
|
|
end;
|
|
if Client=nil then begin
|
|
if Model=nil then
|
|
Model := TSQLModel.Create([],ROOT_NAME);
|
|
case ComboProtocol.ItemIndex of
|
|
0,2: Client := TSQLHttpClient.Create('localhost', PORT_NAME,Model);
|
|
{$IFDEF WINDOWS}
|
|
1: Client := TSQLRestClientURINamedPipe.Create(Model,APPLICATION_NAME);
|
|
{$ENDIF}
|
|
else exit;
|
|
end;
|
|
if not Client.ServerTimeStampSynchronize then begin
|
|
ShowMessage(UTF8ToString(Client.LastErrorMessage));
|
|
exit;
|
|
end;
|
|
case ComboProtocol.ItemIndex of
|
|
2: TSQLRestServerAuthenticationNone.ClientSetUser(Client,'User','');
|
|
else Client.SetUser('User','synopse');
|
|
end;
|
|
Client.ServiceDefine([ICalculator],sicShared);
|
|
end;
|
|
if Client.Services['Calculator'].Get(I) then
|
|
lblResult.Caption := IntToStr(I.Add(a,b));
|
|
end;
|
|
|
|
procedure TForm1.FormDestroy(Sender: TObject);
|
|
begin
|
|
Client.Free;
|
|
Model.Free;
|
|
end;
|
|
|
|
procedure TForm1.ComboProtocolChange(Sender: TObject);
|
|
begin
|
|
FreeAndNil(Client);
|
|
end;
|
|
|
|
end.
|