DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cqfighterli
今日帖子: 2
在线用户: 1
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/14 9:58:32
标题:
Delphi2007+EmbeddedWB集成400电话系统发现ExecScriptEx函数传多个参数的时候会出错 浏览:1892
加入我的收藏
楼主: 最近一个客户要求在我们的管理软件中集成400呼叫系统。该系统是纯B/S的,我们使用的是Delphi2007+EmbeddedWB来把页面集成到软件中,调用页面提供的函数时会返回一个JSON串来告知执行结果。参数有7个,用ExecScript可以执行成功,但是不能直接获取返回的串,所以改用ExecScriptEx函数,但是发现功能不正常了。
----------------------------------------------
-
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/14 10:02:52
1楼: 经过写了简单的测试网页和跟踪EmbeddedWB的源码发现,传入的7个参数,只有前面3个是正确的,后面是前面3个参数的重复。经过分析可能是AnsiString的引用计数机制引起的,将传入的参数都改为WideString类型。
天下都太平了
----------------------------------------------
-
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2016/4/14 11:29:36
2楼: 感谢分享。
----------------------------------------------
-
作者:
男 hardnut (麦轲数据管家) ★☆☆☆☆ -
普通会员
2016/4/14 15:45:41
3楼: 具体问题出在哪里?别的版本有没有问题?可以出个补丁分享下
----------------------------------------------
UniKeeper V10.40 -- 您最贴心的个人数据管理助手
作者:
男 cyu (阿空) ★☆☆☆☆ -
盒子活跃会员
2016/4/14 20:29:32
4楼: 就喜欢楼主这种能把问题解决方案分享的人...
----------------------------------------------
-
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/15 9:56:48
5楼: 没仔细研究具体原因,我估计可能和string(ansistring)的引用计数有关系,但是不确定
----------------------------------------------
-
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/15 9:59:13
6楼: 现在又遇到一个问题,有没有人知道应该怎么解决。
EmbeddedWB是的ExecScriptEx方法,当参数个数为0的时候,会把前面指定的函数名当作属性处理,没有执行JavaScript函数,而是把该名称的JavaScript函数源码返回了。
----------------------------------------------
-
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/15 10:07:57
7楼: 分析底层源找到一个选项设置,原来的值是
DISPATCH_METHOD or DISPATCH_PROPERTYGET
改为
DISPATCH_METHOD
就可以执行了,不过通过字面分析这个函数应该是支持返回JavaScript变量值的

现在剩下的就是怎么用最小的改动在不影响原有功能的基础上修改源码了,大家有好的建议吗?
----------------------------------------------
-
作者:
男 mike1234567890 (Mike) ★☆☆☆☆ -
普通会员
2016/4/15 10:28:42
8楼: 因为项目急,不考虑太多了,直接修改函数,直接函数名后面带'(',所有带'('的调用强制认为是函数,执行。
----------------------------------------------
-
作者:
男 luckyso999 (luckyso) ★☆☆☆☆ -
盒子活跃会员
2016/4/15 16:33:55
9楼: 就喜欢楼主这种能把问题解决方案分享的人...
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS