Delphi6下面的DCOM问题

Oicq99039 2002-04-12 11:35:10
procedure TVT.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
begin
case DispID of
-1: Exit; // DISPID_UNKNOWN
1: if Assigned(FOnData) then
FOnData(Self, Params[3] {const WideString}, Params[2] {WordBool}, Params[1] {WordBool}, Params[0] {Integer});
2: if Assigned(FOnError) then
FOnError(Self, Params[0] {const WideString});
end; {case DispID}
end;
这是Delphi6中注册了一个我的AutoObject后自动生成的。
FOnData(Self, Params[3] {const WideString}, Params[2] {WordBool}, Params[1] {WordBool}, Params[0] {Integer});
这一句的参数是Self,Param[3],2,1,0
我客户端使用了我生成的控件的事件实际得到的参数却应当是Param[0],1,2,3
procedure TFrmMain.VT1Data(Sender: TObject; MissionID: Integer;
ProcSuccess, IsMyRequest: WordBool; var DevID: OleVariant);
这样事件procedure TFrmMain.VT1Data一触发就报错。因为MissionID被系统赋值为
DevID的值了。只有手动把它改成
FOnData(Self, Params[0] {const WideString}, Params[1] {WordBool}, Params[2] {WordBool}, Params[3] {Integer});
才能正常使用。



下面是我的DCOM的服务器端的程序自动生成的代码:
IVTEvents = dispinterface
['{DF2F1A58-B427-430B-BE42-A28B95F5D9B5}']
procedure OnData(MissionID: Integer; ProcSuccess: WordBool; IsMyRequest: WordBool;
const DevID: WideString); dispid 1;
procedure OnError(const AError: WideString); dispid 2;
end;

服务器端对事件的调用:
procedure TVT.ReturnBack(DevID: String; MissionID: Integer; ProcSuccess: Boolean; IsMyMission: Boolean);
begin
FEvents.OnData(MissionID, ProcSuccess, IsMyMission, DevID);
end;

...全文
46 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oicq99039 2002-04-24
  • 打赏
  • 举报
回复
这个问题很糊涂
Oicq99039 2002-04-15
  • 打赏
  • 举报
回复
hehe,
I See
一些Delphi7的例子,包含下面内容:(高手就别看了,新手可看看,也是好多年没做了,又要做个小东西,练手做的例子) 有的是本人练习做的,少数是下载别人的或修改过的,也有1个似乎是明日科技的配套代码-此处没有删除,懒得删除直接打包了。 用这些分,只是用来备用下载其他东西而用,你觉得不值得,你留言分退给你(我来也不是常来这里),我认为是值得的。 还有一些其他的清单没罗列出来 如数据库表结构找不到,根据名字找这个文件名:EquipmentSQL_20170528_ok, 如果没就是没有了,因为一个连接服务器,一个是本机上的练习数据库,如没有请见谅 大致类型: cxGrid的几个例子、ini连接数据库、明日科技配套代码(文件上传下载)、 时间差相减(可参考Delphi函数里面的综合运用)、基本控件应用 cxGrid查找功能 cxGrid的列属性 cxGrid应用交流实例一_ok eg_Add_cbbValue_IntoMemo_test_20170401 eg_Check_Checkbox_Change eg_counter eg_cxGrid_Right_2 eg_cxGrid_Right_更细权限的bit值到表中 eg_cxGrid_SumRecord_1 eg_DCom_connection_20170606 eg_ImportToSQL eg_LoadRecord_Improve_Original eg_LoadRZCheckTree_1 eg_LoadRZCheckTree_连带设置_2 eg_LoadRZCheckTree_双击用户设置_del eg_LoadTree_1 eg_ReadIni_独立数据模块 eg_test_ImportExcelToSQL_ComOBJ_2 eg_update_bit_20170528 eg_报废时间月日格式只有1位时问题_20170609 eg_测试某列的条件改变另外列的Edit属性(cxGrid的例子) eg_对BoolToStr后的值进行再次转换_最后循环取bit值 eg_时间差计算_2 FileMS(明日科技的配套代码,关于文件上传下载的那个) EquipmentSQL_20170528_ok(如没数据库的,在这里查表结构,有的表结构不在这里,只能参考一下了)

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧