|
|
导航: |
论坛 -> Web应用开发
斑竹:bodies |
|
作者: |
|
2016/4/14 9:58:32 |
标题: |
Delphi2007+EmbeddedWB集成400电话系统发现ExecScriptEx函数传多个参数的时候会出错 |
浏览:1892 |
|
加入我的收藏 |
楼主: |
最近一个客户要求在我们的管理软件中集成400呼叫系统。该系统是纯B/S的,我们使用的是Delphi2007+EmbeddedWB来把页面集成到软件中,调用页面提供的函数时会返回一个JSON串来告知执行结果。参数有7个,用ExecScript可以执行成功,但是不能直接获取返回的串,所以改用ExecScriptEx函数,但是发现功能不正常了。
----------------------------------------------
- |
作者: |
|
2016/4/14 10:02:52 |
1楼: |
经过写了简单的测试网页和跟踪EmbeddedWB的源码发现,传入的7个参数,只有前面3个是正确的,后面是前面3个参数的重复。经过分析可能是AnsiString的引用计数机制引起的,将传入的参数都改为WideString类型。 天下都太平了
----------------------------------------------
-
|
作者: |
|
2016/4/14 11:29:36 |
2楼: |
感谢分享。
----------------------------------------------
-
|
作者: |
cyu (阿空) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2016/4/14 20:29:32 |
4楼: |
就喜欢楼主这种能把问题解决方案分享的人...
----------------------------------------------
-
|
作者: |
|
2016/4/15 9:56:48 |
5楼: |
没仔细研究具体原因,我估计可能和string(ansistring)的引用计数有关系,但是不确定
----------------------------------------------
-
|
作者: |
|
2016/4/15 9:59:13 |
6楼: |
现在又遇到一个问题,有没有人知道应该怎么解决。 EmbeddedWB是的ExecScriptEx方法,当参数个数为0的时候,会把前面指定的函数名当作属性处理,没有执行JavaScript函数,而是把该名称的JavaScript函数源码返回了。
----------------------------------------------
-
|
作者: |
|
2016/4/15 10:07:57 |
7楼: |
分析底层源找到一个选项设置,原来的值是 DISPATCH_METHOD or DISPATCH_PROPERTYGET 改为 DISPATCH_METHOD 就可以执行了,不过通过字面分析这个函数应该是支持返回JavaScript变量值的
现在剩下的就是怎么用最小的改动在不影响原有功能的基础上修改源码了,大家有好的建议吗?
----------------------------------------------
-
|
作者: |
|
2016/4/15 10:28:42 |
8楼: |
因为项目急,不考虑太多了,直接修改函数,直接函数名后面带'(',所有带'('的调用强制认为是函数,执行。
----------------------------------------------
-
|
作者: |
|
2016/4/15 16:33:55 |
9楼: |
就喜欢楼主这种能把问题解决方案分享的人...
----------------------------------------------
-
|
|