protected
//******************
public
constructor Create;
function InputArray ( const myArray : account_i.ArrayType): Single;
end;
implementation
uses ServerMain;
constructor TAccount.Create;
begin
inherited;
end;
function TAccount. InputArray (const myArray : account_i.ArrayType): Single;
var
j: Integer;
begin
// account_i.ArrayType是指我们自定义的数组类型在account_I单元中
for j := 0 to 2 do
begin
Form1.Memo1.Lines.Add(''''myArray['''' + IntToStr(j) + ''''] = '''' + IntToStr(myArray[j]) );
//接受从客户端传递过来的数组变量并将其依次加入到主窗体的MEMO中
end;
result := random * 100;//返回一个随机数
end;
initialization
randomize;
end.
//服务端程序主单元
unit ServerMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Corba,
Account_I, Account_C, Account_S, Account_Impl, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
protected
{ protected declarations }
Acct : Account; // skeleton 对象
procedure InitCorba;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.InitCorba;
begin
CorbaInitialize;
// Add CORBA server Code Here
Acct := TAccountSkeleton.Create(''''Array Server'''', TAccount.Create);
BOA.ObjIsReady(Acct as _Object);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
InitCorba;
Memo1.Lines.Add(''''Account object created...'''');
Memo1.Lines.Add(''''Server is ready'''');
end;
end.
//客户端程序
unit ClientMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Corba, StdCtrls, Account_I, Account_C;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ private declarations }
protected
{ protected declarations }
Acct : Account;
myArray : ArrayType;
procedure InitCorba;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.InitCorba;
begin
CorbaInitialize;
Acct := TAccountHelper.bind;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
j: Integer;
begin
InitCorba;
for j := 0 to 2 do
myArray[j] := (j + 1) * 100;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := FormatFloat(''''InputArray = $#,##0.00'''', Acct.inputArray(myArray));
end;
end.
上面的程序实例很简单我就不一一说明了,下面我们来看一个数据访问的实例
//IDL
interface Employee {
any getEmployeesByName(in string name);
};
接口方法声明单元
//XXX_Impl.pas
interface
uses
SysUtils,
CORBA,
employee_i,
employee_c;
type
TEmployee = class;
TEmployee = class(TInterfacedObject, employee_i.Employee)
public
constructor Create;
function getEmployeesByName ( const name : AnsiString): ANY;
end;
implementation
uses dmEmployee,DMPooler, provider,DSIntf,ServerMain;
constructor TEmployee.Create;
begin
inherited;
end;
function TEmployee.getEmployeesByName ( const name : AnsiString): ANY;
var
DM: TdmEmploy;
RecsOut: Integer;
Options: TGetRecordOptions;
begin
Options := [grMetaData,grReset]; //must specify meta data
DM := ModulePooler.GetModule as TdmEmploy; //Get instance of datamodule from Pool
try
DM.qryEmployee.Close;
DM.qryEmployee.ParamByName(''''name'''').AsString:= name + ''''%'''';
//显示连接服务器的数量
Inc(Form1.HitCount);
Form1.Label1.Caption := Format(''''Hit Count = %d'''', [Form1.HitCount]);
DM.qryEmployee.Open;
Result:=DM.proEmployee.GetRecords(-1, RecsOut, Byte(Options));
DM.qryEmployee.Close;
finally
ModulePooler.FreeModule(DM);//Return instance of DataModule to pool
end;
end;
initialization
//将TdmEmploy对象放入共享池中
ModulePooler.ModuleClass := TdmEmploy;
end.
//共享池的声明单元
主要描述如何提供一个多客户的访问数据提供
unit DMPooler;
interface
上一页 [1] [2] [3] [4] 下一页 [系统软件]InstallShield Express for delphi制作安装程序定… [系统软件](转帖) 忘记登录密码的解决方案 for XP/2003/2000 [系统软件]交叉编译sshd for IXP425 ARM Platform by MVL 3… [Delphi程序]《关于VisiBroker For Delphi的使用》(4) [Delphi程序]一个超链接Image控件!(For D3,D4,D5,D6)源代码 [Delphi程序]Five of the best tools for Delphi [Delphi程序]《关于VisiBroker For Delphi的使用》(2) [Delphi程序]《关于VisiBroker For Delphi的使用》 [Delphi程序]Delphi for .Net 编译器预览 - by John Kaster [Delphi程序]编写一个单独的Web Service for Delphi7(步骤)
|