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.