飞
飞扬人生
Unregistered / Unconfirmed
GUEST, unregistred user!
在三层次分布式应用中,远程调用是十分耗体的。因此,本人想在客户端已启动就创建好
远程接口的的代理,并保存连接共享在upublic单元,以便其它窗体调用
,但是奇怪的是其他数据类型都可以,就是接口变量不可以共享,不知道是怎么回事
我的程序是:
client:
upublic.pas
var
login:Iclogin;
main.pas
procedure TFormMain.FormCreate(Sender: TObject);
var
user:string;
begin
machname:='xyg';
login:=coclogin.CreateRemote(machname);
end;
procedure TFormMain.N20Click(Sender: TObject);
begin
form1:=Tform1.Create(self);
form1.showmodal;
form1.free;
end;
uform1.pas
uses
upublic;
procedure Tform1.SpeedButton1Click(Sender: TObject);
begin
login.Login(vuser);
user:=vuser;
showmessage(user);
end;
server:
Tclogin = class(TMtsAutoObject, Iclogin)
{---------}
procedure Tclogin.Login(var role: OleVariant);
begin
if issecurityenabled then
begin
if iscallerinrole('manager') then
role:='manager';
if ObjectContext.iscallerinrole('user') then
role:='user';
end;
setcomplete;
end;
次程序编译可以通过但是远行时提示:
如何解决?
远程接口的的代理,并保存连接共享在upublic单元,以便其它窗体调用
,但是奇怪的是其他数据类型都可以,就是接口变量不可以共享,不知道是怎么回事
我的程序是:
client:
upublic.pas
var
login:Iclogin;
main.pas
procedure TFormMain.FormCreate(Sender: TObject);
var
user:string;
begin
machname:='xyg';
login:=coclogin.CreateRemote(machname);
end;
procedure TFormMain.N20Click(Sender: TObject);
begin
form1:=Tform1.Create(self);
form1.showmodal;
form1.free;
end;
uform1.pas
uses
upublic;
procedure Tform1.SpeedButton1Click(Sender: TObject);
begin
login.Login(vuser);
user:=vuser;
showmessage(user);
end;
server:
Tclogin = class(TMtsAutoObject, Iclogin)
{---------}
procedure Tclogin.Login(var role: OleVariant);
begin
if issecurityenabled then
begin
if iscallerinrole('manager') then
role:='manager';
if ObjectContext.iscallerinrole('user') then
role:='user';
end;
setcomplete;
end;
次程序编译可以通过但是远行时提示:
如何解决?