Delphi6下面的DCOM问题

Oicq99039 Oicq99039 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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;

...全文

相关推荐

通达OA2016版 破解补丁

通达 OA 2016版 完美 破解补丁!!!!!!!!!!!

hhmazhihao

通达OA2016版破解补丁(包含应用自建平台)

通达OA2016版破解补丁,支持不限制用户数量,不限制时间,报表模板不限制数量。 测试完全可用!

hai7425

通达OA2016集团版全功能支持所有移动端完美破解补丁

Office Anywhere产品包含300多个标准化的功能组件。电子邮件、手机短信、微讯、即时通讯、论坛和讨论区等功能组件,建立起企业内部沟通和通讯平台;公告通知、新闻管理、日程管理、工作计划、工作日志、投票管理等功能组件,建立起企业行政办公平台;工作流系统提供灵活、可视化的“智能表单设计器”和“流程设计器”,提供完备的流程处理、监控、超时催办、数据分析等功能,建立起企业流程处理平台;公文管理、项目管理、人力资源、智协同、任务中心等子系统和功能组件,建立起企业业务处理平台;文件柜、网络硬盘、图片浏览、OA知道、维基百科、文档检索中心等功能组件,建立起企业知识管理平台;会议管理、车辆管理、固定资产管理、办公用品管理、图书管理、档案管理、通讯薄等功能组件,建立起企业资源管理平台。产品全面支持移动办公,可在iOS和Andriod两大平台下的手持移动设备上完成流程的办理和审批、收发邮件、查看新闻、公告等功能。产品更进一步提供即时通讯、手写签章、视频会议、附件加密等10多个实用的扩展组件,进一步丰富了产品功能,满足了不同行业、不同层次的客户需求

mfsuncom

通达oa2016 v9.1.160518破解补丁

通达oa2016 v9.1.160518破解补丁(注意:只试用于通达oa2016 v9.1.160518服务端版本,其他版本不适用。),亲测可用!本破解补丁只用于体验通达OA2016各项功能,如用于生产部署,请购买正版!

Huang_C

通达OA2016-9.8.1230破解补丁

通达OA2016破解补丁。 1、到官网下载OA2016最新版服务端安装包、用户PC端办公精灵、手机端下载址 2、安装OA服务端到电脑或服务器或云主机或VPS主机 3、安装完,在OA服务管理器(MYOA\BIN\monitor.exe)中关闭所有OA服务,并退出服务控制器monitor.exe。 4、替换bin和webroot文件。 5、到D:\MYOA\BIN目录运行monitor.exe 并启动OA所有服务 6、检查OA所有服务是否正常开启。 7、在OA服务端上打开浏览器,输入http://localhost按提示升级(如果设置了端口的,末尾加上:端口号) 8、登录OA后按F5刷新网页,并到【系统管理】=》【系统资源管理】=》【系统缓存数据】=》更新系统缓存数据。 正式使用时删除演示数据 9、到【系统管理】=》【系统资源管理】=》【演示数据清理】=》根据需要全删除或只删除单位、部门、用户、工作流。然后做一次第9步即可刷新单位、部门信息,删除完数据按第9步刷新OA缓存。

hai7425
评论 2
收藏 已收藏
分享
返回顶部
Oicq99039
Delphi 5,944 成员 262,941 内容