雷振林 2010年01月06日 星期三 15:38 | 1652次浏览 | 2条评论
今天收到售服部的电话,已经3-4年没有升级过的软件,在海南客户那边发现一个问题,软件处理到某一行数据就报错,看了那行数据有2个冷僻字 “磡”和“憶”。 我想软件那么多年了,而且一直有客户在用的,应该不存在什么BUG的。退一步来讲,以前那么多客户难道就没遇到过冷僻字? 所以怀疑是数据格式的问题。 最后售服实在搞不定,我答应帮看看软件是否有问题。
不看不知道,一看吓一跳,还真是软件的一个BUG: 软件中有个按分隔符截取字段内容的功能,该客户的分隔符为"|",16进制为 7C,发现“磡”字的16进制为 B47C,啊,也有个7C!? 程序代码是BCB6的,使用了AnsiString.Pos()函数获取分隔符位置,然后根据位置去截取。AnsiString.Pos("|")尽然返 回了“磡”字的第2个字节位置,所以软件截错了,晕啊。
查了一下资料,发现有AnsiString.AnsiPos()函数,能够处理多字节字符串。试了一下,果然好了。
看来即使自认为很成熟的软件,也可能存在BUG的。
Zeuux © 2024
京ICP备05028076号
回复 大迷糊 2010年01月06日 星期三 16:37