关于应用层向客户层传递参数!客户层为什么要设变量为variant?(100分)

  • 主题发起人 主题发起人 zzutlink
  • 开始时间 开始时间
Z

zzutlink

Unregistered / Unconfirmed
GUEST, unregistred user!
应用层的method定义为:
procedure CheckLogin(const LoginName, Password: WideString;
out Flag: OleVariant);
safecall;
客户端调用:
var
Flag:Variant;
LoginName,Password:string ;
begin
DCOMConnection1.AppServer.CheckLogin(LoginName,Password,Flag);
为什么Flag一定要设为variant,我设为Boolean时就出错,谢谢各位先!
 
传出参数一定要是变体的,BOOLEAN 不是变体类型,所以不可以作为传出参数。
 
不一定要是variant类型的,可以是string,integer类型,这两种类型我都用过,时刻行的。
 
如果把dcomconnection换成socketconnection,在客户端调用
socketConnection1.AppServer.CheckLogin(LoginName,Password,Flag);会出错,不知为什么?
 
modern_man:
你用过string,integer传会数据?可以吗?能不能给一小段代码参考
还有就是在type library中添加method时对各个参数的设置(in,out……)
谢谢先!
 
怎么没人回应了?我的分也没法给呀!
麻烦各位先!
 
客户端调用参数类型必须与服务端声明一致.
 
不一定用variant;
但是你的过程里的参数是variant 至少要前后一致阿
 
底层标准是c的,variant能自动匹配(最重要的是 NULL的匹配)
呵呵,胡扯两句
 
Boolean数据类型在IDL中没有匹配的类型。看看Type Library里的Method的参数可选的数据类型就那些。
 
终于找到会的人了·····
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部