前端之家收集整理的这篇文章主要介绍了
改问题的能力,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题情况:网页上
调用了VB写的一个控件
生成Word文档。现在当某一ID>36767(2的16次方,记不清这个数了)时就会出错,生不成文档。因此怀疑是这个控件的入口
方法的参数给设定为Integer型,导致出错。
已有条件:有早期源码,并不是最新的源码。但里面只有一个
方法的参数为Integer,据分析肯定不是这个
方法导致。
这问题何解?
1.确认当前
代码中没有另外的Integer参数
方法时,怀疑他们给出的疑问有问题,也许不是VB控件的错。但确实是当ID大于那一值后才会出现这种问题。
2.查了VB
代码后,发现在处理
图片时有一个路径是类似于Picture_ID这样的
内容,于是怀疑是因为写这个路径的那个
方法是Integer参数,因为没有
生成这个路径,所以VB在这个路径下取
图片时就会出错。但经确认,网页是用
PHP写的,
PHP不会有Integer这样的主动声明过程,也就产生不了这种
错误,这个怀疑被否定。
3.再次查看VB
代码,发现它在
生成Word文档时处理了一个XML
文件,
搜索这个
文件后,在某一位置下找到。
删除后,在执行一下点按钮的操作,这时又有了XML
文件。也就是说VB控件里还有一个
生成XML
文件的
方法。因为VB
代码不是最终版的,所以怀疑在后面的
代码中又加了一个对应的
生成XML的
方法。
5.于是接下来的工作就是在现在
代码中补上这个没有的
方法,并把
生成XML
文件的
方法也补上。写好
代码后,得到对应的.ocx控件,二进制兼容后。替换。搞定
原文链接:https://www.f2er.com/vb/259983.html