改问题的能力

前端之家收集整理的这篇文章主要介绍了改问题的能力前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题情况:网页上调用了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的方法
4.到此时才想起去看看PHP代码。那里面清楚的写着VB控件的入口方法为另一个现有代码中没有的方法
5.于是接下来的工作就是在现在代码中补上这个没有的方法,并把生成XML文件方法也补上。写好代码后,得到对应的.ocx控件,二进制兼容后。替换。搞定

猜你在找的VB相关文章