Pos函数对中文的bug?该怎么处理
Pos函数对中文的bug?Delphi(Pascal) codevariTmp: IntegerbeginiTmp : Pos(谢, 巩义市黄)ShowMessa
Pos函数对中文的bug?
Delphi(Pascal) codevar iTmp: Integer;begin iTmp := Pos('谢', '巩义市黄'); ShowMessage(IntToStr(iTmp)); //6 iTmp := Pos(WideString('谢'), WideString('巩义市黄')); //0 ShowMessage(IntToStr(iTmp));end;
大家试试
[解决办法] 只要转化为WideString就没有问题了
[解决办法]应该是'谢'这个汉字编码的问题
我换了个'我'第一个输出就是0
[解决办法][解决办法]第一个是按asic找的,谢的第一个码是208,市的第二个吗是208,所以找到这个
[解决办法]这是因为第一个字的后半部分加上第二个字的前半部分就是'谢',所以才出现的这种情况咧,这不是bug,是由于汉字由两个字节组成的
[解决办法]动不动就BUG,BS
[解决办法]不是漏洞,是由于汉字由两个字节组成的,使用WideString就Ok了
试试看:
edit1.Text := intToStr(pos('市',WideString('资中市')));
//结果=3,正确.
edit1.Text := intToStr(pos('市',WideString('资兴市')));
//结果=3
[解决办法]要是你不会的不明白的东西就给下个定义说是Bug.楼主你得当凯撒才行。
[解决办法]换成widestring处理
[解决办法]既然楼主知道使用解决的方法:
iTmp := Pos(WideString('谢'), WideString('巩义市黄')); //0
ShowMessage(IntToStr(iTmp));
足可见,他是知道怎么回事的,大家没必要扣帽子,贴出来,一则娱乐大家,二则警醒遇到汉字定位时需注意此种情况而已。
[解决办法]呵呵,汉字编码问题耶。换widestring
[解决办法]使用WideString吧。
[解决办法]貌似用错函数吧,应该使用
AnsiPos('谢', '巩义市黄');
[解决办法]现在csdn的高手是不是已经不来了?
[解决办法]单字节和双字节的问题
[解决办法]你用AnsiPos试试
[解决办法]AnsiPos 一般 情况下最好用这个
[解决办法]ansi和unicode什么区别