Client



 

unit ClientMain;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, RoutixRPCCOM_TLB, DelphiHelperUnit, ExtCtrls, ComObj;

 

type

  TClientMainForm = class(TForm)

    btnCallSimple: TButton;

    memLog: TMemo;

    edtAddress: TLabeledEdit;

    btnCallWithCallback: TButton;

    procedure btnCallSimpleClick(Sender: TObject);

    procedure btnCallWithCallbackClick(Sender: TObject);

  private

    FClient: IClient;

  public

 

  end;

 

var

  ClientMainForm: TClientMainForm;

 

implementation

 

{$R *.dfm}

 

procedure TClientMainForm.btnCallSimpleClick(Sender: TObject);

const

  WindowsFolder = 0;

  SystemFolder = 1;

  TemporaryFolder = 2;

var

  fso: OleVariant;

begin

  ///  Client creation

  FClient := CreateRoutixRPCClient;

  try

    ///  Connection to a remote server.

    ///  In demo version server will ignore user name and password.

    ///  This means that you can connect without knowledge user name and password!

    ///  Also demo version of server allows no more than 2 simultaneous

    ///  connections!

    FClient.Connect(edtAddress.Text, 'RoutixUser', 'Secret');

    ///  Remote object requesting

    fso := FClient.RequestObject('Scripting.FileSystemObject');

    with memLog.Lines do

    begin

      Clear;

      ///  Calling methods on remote object

      Add(fso.GetSpecialFolder(WindowsFolder));

      Add(fso.GetSpecialFolder(SystemFolder));

      Add(fso.GetSpecialFolder(TemporaryFolder));

    end;

  finally

    fso := Unassigned;

    FClient := nil;

  end;

end;

 

procedure TClientMainForm.btnCallWithCallbackClick(Sender: TObject);

var

  ObjLocal,

  ObjRemote: OleVariant;

begin

  ///  Client creation

  FClient := CreateRoutixRPCClient;

  try

    ///  Connection to a remote server.

    ///  In demo version server will ignore user name and password.

    ///  This means that you can connect without knowledge user name and password!

    ///  Also demo version of server allows no more than 2 simultaneous

    ///  connections!

    FClient.Connect(edtAddress.Text, 'RoutixUser', 'Secret');

    ///  Local object creation

    ObjLocal := CreateOleObject('ClientObject.Test');

    ///  Remote object requesting

    ObjRemote := FClient.RequestObject('ServerObject.Test');

    ///  Set local object as remote object's property

    ObjRemote.CallbackObject := ObjLocal;

    ///  Call method of remote object. When calling, remote object in turn

    ///  will call method "FireCallback" on our local object which will show

    ///  a message box. After next line execution we should see the message from

    ///  the server.

    ObjRemote.FireCallback;

  finally

    ObjRemote := Unassigned;

    FClient := nil;

    ObjLocal := Unassigned;

  end;

end;

 

end.