"无效的被呼叫方"!这是怎么回事??求救

sapphire99 2003-05-16 03:05:40
我碰到了2个问题:
A.应用服务器端的一个过程:
procedure FilterAss(var vClassNum: OleVariant; var IfResult: OleVariant);safecall;
原先在参数vClassNum之前没加var,就报错:“Invalid variant Operation”,然后我把Server_tlb,和interface(IAppServer),连同过程FilterAss本身的参数(共要修改3处吧)vClassNum都改为了var的变量型参数,这就不报错了。但是再下来又有问题了
B.在Delphi中编译运行客户端时出错了,光标指在这一行程序上:
FormMain.SocketConnection.AppServer.FilterAss(stClassNum,haveAss);
报的错误是“无效的被呼叫方”,搞不懂了,急!
请大侠们指教

...全文
205 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sapphire99 2003-05-19
这个问题我知道了,是我自己在tlb设置那里没有搞好,导致客户端无法调用应用服务器的方法,即“无效的呼叫”,应该是这样的吧。我是重新写过了
procedure TAMSN.FilterAss(var vClassNum: OleVariant; var IfResult: OleVariant);
这个方法的tlb设置,就好了。
不能给自己加分,给兄弟们照发工资了!
回复
888888888888 2003-05-18
关注
回复
sapphire99 2003-05-16
服务器端的程序:
procedure TAMSN.FilterAss(var vClassNum: OleVariant; var IfResult: OleVariant);
begin
QAssTb.Close;
QAssTb.SQL.Clear;
QAssTb.SQL.Add('Select * From AssignmentTb');
QAssTb.SQL.Add('Where ClassNum =' + '''' + vClassNum + '''');
QAssTb.Open;
end;
// *********************************************************************//
IAMSN = interface(IAppServer)
['{386C5F71-3BAE-4C66-BC2C-677462A3A4DA}']
procedure AddUser(Host: OleVariant; IP: OleVariant); safecall;
procedure DelUser(Host: OleVariant; IP: OleVariant); safecall;
procedure FilterAss(var vClassNum: OleVariant; var IfResult: OleVariant); safecall;
end;
===================================

客户端:
var
FormStu: TFormStu;
haveAss, stClassNum: variant;
-------------------------------------------
procedure TFormStu.FormShow(Sender: TObject);
begin
haveAss := false;
stClassNum := ClassNum; //showmessage(stClassNum);
FormMain.SocketConnection.AppServer.FilterAss(stClassNum,haveAss);
end;
===========================================
AddUser()和DelUser()都没有问题,在FormShow()中,我加了showmessage(stClassNum);显示的也是我所要的数据,是string类型。不知在哪个地方疏漏了什么
回复
yzykjh 2003-05-16
代码贴出来看看。
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1575

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2003-05-16 03:05
社区公告
暂无公告