Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций РСОИ.doc
Скачиваний:
20
Добавлен:
04.11.2018
Размер:
1.93 Mб
Скачать

2. Формування форми

На головній формі проекту розміщуємо Editl, Buttonl, Button2.

У модулі Unit1 оголошуємо змінну STRServ типу SimpleCorbaInt. До автоматично створеного шаблону методу InitCorba додаємо наступний код:

procedure TForm1.InitCorba;

begin

CorbaInitialize;

// Bind to the Corba server like this

// Acct := TAccountHelper.bind;

STRServ:=TSimplCORBAIntHelper.Bind();

end;

Цей код виконує з'єднання з CORBA-сервером і одержання вказівника на інтерфейс SimpleCorbaInt Corba-об’єкту.

В оброблювачі події OnClick кнопки Button1 головної форми викликаємо метод InitCorba для зв'язку з CORBA.

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.InitCorba;

end;

Для виклику методу інтерфейсу в оброблювачі події OnClick Button2 пишемо наступне:

procedure TForm1.Button2Click(Sender: TObject);

begin

Label1.Caption := STRServ.getstr(Edit1.text);

end;

У лістингу наведено фрагменти коду клієнтського застосунка:

//Модуль головної форми

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Corba, STRServ_c, STRServ_i, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit; Button1: TButton;

Button2: TButton; Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ private declarations }

protected

//declare your Corba interface variables like this Acct:Account;

STRServ:SimplCORBAInt;

procedure InitCorba; { protected declarations }

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.InitCorba;

begin

CorbaInitialize;

//Bind to the Corba server like this Acct:=TAccountHelper.bind;

STRServ:=TSimplCORBAIntHelper.Bind();

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.InitCorba;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Label1.Caption := strServ.getstr(Edit1.text);

end;

end.

3. Запуск застосунка

  1. Для запуску застосунка необхідно на машині сервера і на машині клієнта запустити SmartAgent.

  2. Запустити сам сервер.

  3. Запустити клієнт.

Приклад програмних кодів сервера

//модуль головної форми

unit Unit1;

interface

uses

Windows, Messages, . . .,STRServ_s, Corba, STRServ_c, STRServ_i, STRServ_impl;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ private declarations }

protected

{ protected declarations }

//Add Corba interface variables here like this Acct:Account; skeleton object

// STRServ:SimplCORBAInt;

procedure InitCorba;

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.InitCorba;

begin

CorbaInitialize;

// Add CORBA server code here like this

//Acct:=TAccountSkeleton.Create('Jack B Quick',TAccount.Create);

// BOA.ObjIsReady(Acct as _Object);

STRServ:=STRServ_s.TSimplCORBAIntSkeleton.Create('My str server',TSimplCorbaInt.Create);

BOA.ObjIsReady(STRServ as _Object);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.InitCorba;

end;

end.

//модуль реалізації інтерфейсу

unit STRServ_impl;

{D:\Program Files\Borland\Delphi7\Projects\ CORBA_GETSTR\ STRServ.idl. }

{Delphi Pascal unit : STRServ_impl }

{derived from IDL module : default }

interface

uses

SysUtils, CORBA, STRServ_i, STRServ_c;

type

TSimplCORBAInt = class;

TSimplCORBAInt = class(TInterfacedObject, STRServ_i.SimplCORBAInt)

protected {*** User variables go here ***}

public

constructor Create;

function getstr (const instr : AnsiString): AnsiString;

end;

implementation

constructor TSimplCORBAInt.Create;

begin

inherited Create;

{ *** User code goes here *** }

end;

function TSimplCORBAInt.getstr (const instr : AnsiString): AnsiString;

begin

{ *** User code goes here *** }

result:= Instr+' + CORBA ADD STR' ;

end;

initialization

end.

//модуль опису інтерфейсу

unit STRServ_i;

{Please do not edit the contents of this file. You should instead edit and }

{recompile the original IDL which was located in the file }

{D:\Program Files\Borland\Delphi7\Projects\ CORBA_GETSTR\ STRServ.idl. }

{Delphi Pascal unit : STRServ_i }

{derived from IDL module : default }

interface

uses

CORBA;

type

SimplCORBAInt = interface;

SimplCORBAInt = interface

['{13BA81BA-B2C1-55DF-3B2B-1189AE4792D8}']

function getstr (const instr : AnsiString): AnsiString;

end;

implementation

initialization

end.