开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2298|回复: 8
收起左侧

[已回应] 关于模块中涉及com对象操作 文本参数超过512kb崩溃的bug解决

[复制链接]
结帖率:25% (1/4)
发表于 2014-3-8 03:23:54 | 显示全部楼层 |阅读模式   北京市北京市
本帖最后由 无为Dman 于 2014-3-8 03:42 编辑

当然模块所有涉及 com对象文本参数的命令都会出现这个问题,下面提供一下经多次测试 ,稳定的解决方案

下面列出传入和取出超长文本的2个修正方案:   
eg1:传入超长文本
以模块中的 “正则表达式类”中 方法“创建”为例  
参数:“被搜索的文本” 使用中经常会有要处理大于512kb这个崩溃极限值的时候

源代码中  集_过度对象 = 正则.对象型方法 (“Execute”, 被搜索的文本) 会导致程序崩溃
换成下面的传参方法:文本转成变体类型就行了 但是需要先转成Unicode编码
----------
变体型.赋值 (编码_ASCII到Unicode (被搜索的文本), )
集_过度对象 = 正则.对象型方法 (“Execute”, 变体型)
======================================
eg2:返回超长文本
以模块中的 “普通填表” 类中 方法“网页_取源码”为例  
当取回的网页源码大于512kb也会造成程序瞬间崩溃

源代码:
返回 (集_网页文档.读对象型属性 (“documentElement”, ).读文本属性 (“outerHTML”, ))
修正源码:
返回 (编码_Unicode到Ansi (集_网页文档.读对象型属性 (“documentElement”, ).读属性 (“outerHTML”, ).取字节集 ()))


从程序安全理论上说 1.应将模块中 所有 传给对象的文本参数 换成传入 以 Unicode 编码的变体型  
2.将所有 对象.读文本属性()方法 换成 编码_Unicode到Ansi (对象.读属性(,).取字节集())


模块中涉及以上情况的命令非常多, 希望官方将 模块中所有涉及以上情况的对象操作进行修复,远离程序崩溃的危险,
最后致模块开发组全体成员—— 辛苦了


评分

参与人数 2精币 +3 收起 理由
qqq123123123 + 1 奉上小小红包希望笑纳
heiyi + 2 建议非常的好!!!

查看全部评分

发表于 2023-11-15 23:32:51 | 显示全部楼层   广西壮族自治区桂林市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:25% (1/4)
 楼主| 发表于 2014-3-9 20:21:50 | 显示全部楼层   北京市北京市
qqq123123123 发表于 2014-3-9 08:25
怎么把正则里面的 替换 命令改下?文本方法 replace 怎么改?求解····


[e]
.版本 2
.子程序 替换, 文本型, 公开, 替换在正则表达式查找中找到的文本
.参数 用作替换的文本, 文本型, 可空, 用作替换的文本
.局部变量 集_被搜索的文本_变体型, 变体型
.局部变量 用作替换的文本_变体型, 变体型
集_被搜索的文本_变体型.赋值 (编码_Ansi到Unicode (集_被搜索的文本), )
用作替换的文本_变体型.赋值 (编码_Ansi到Unicode (用作替换的文本), )
返回 (编码_Unicode到Ansi (正则.通用方法 (“Replace”, 集_被搜索的文本_变体型, 用作替换的文本_变体型).取字节集 ()))

[/e]
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 20 天

发表于 2014-3-9 14:15:30 | 显示全部楼层   重庆市重庆市
无为Dman 发表于 2014-3-9 01:19
恩 那个改link.ini也行 ,
不过改栈大小有2个弊端
      1.同一份源码在忘记改栈大小的机器编译后莫名 ...

对于com这些,我也不会,已经提交给小组其他成员去解决了,看他是否有时间,和去修复
当然了,如果你能把修改后的源码,给我,我直接复制就更好了
如果你没有精易模块的源码,到这里下载:http://bbs.125.la/thread-13698580-1-1.html
或者直接加我QQ索取,看我签名
回复 支持 反对

使用道具 举报

结帖率:67% (8/12)

签到天数: 9 天

发表于 2014-3-9 08:25:24 | 显示全部楼层   江苏省盐城市
无为Dman 发表于 2014-3-9 01:19
恩 那个改link.ini也行 ,
不过改栈大小有2个弊端
      1.同一份源码在忘记改栈大小的机器编译后莫名 ...

怎么把正则里面的 替换 命令改下?文本方法 replace 怎么改?求解····
回复 支持 反对

使用道具 举报

结帖率:25% (1/4)
 楼主| 发表于 2014-3-9 01:19:23 | 显示全部楼层   北京市北京市
本帖最后由 无为Dman 于 2014-3-9 01:22 编辑
御风软件 发表于 2014-3-8 15:30
问了下人,修改toos下的link.ini,修改增加栈的大小可以解决,而你说的,我又没有测试的数据

恩 那个改link.ini也行 ,
不过改栈大小有2个弊端
      1.同一份源码在忘记改栈大小的机器编译后莫名崩溃 不易发现原因  
      2. 改配置中的栈大小是个固定值,什么情况改多大的值 也是不方便的
      3.一直用et助手 ,发现et助手有个【编译时解决对象操作文本大于512kb崩溃】的功能选项 ,实测功能并未生效,我的系统是 win7 64位
测试代码:


[e]
.版本 2
.支持库 spec

.子程序 测试子程序
.局部变量 正则, 正则表达式类
.局部变量 源文本, 文本型

源文本 = 取重复文本 (100000, “测试测试一下”)
调试输出 (正则.创建 (“[\s\S]*”, 源文本, , ))
调试输出 (“匹配数量”, 正则.取匹配数量 ())

调试输出 (正则.取匹配文本 (1))
[/e]
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 20 天

发表于 2014-3-8 15:30:53 | 显示全部楼层   重庆市重庆市
问了下人,修改toos下的link.ini,修改增加栈的大小可以解决,而你说的,我又没有测试的数据
487RHDJ[VC5_H91076.jpg
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 20 天

发表于 2014-3-8 14:54:28 | 显示全部楼层   重庆市重庆市
这个,不太懂这个呢,我们会去看看和讨论的,谢谢哈~
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:100% (3/3)
发表于 2014-3-8 06:41:07 | 显示全部楼层   广东省揭阳市
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表