随笔 - 36  文章 - 2  评论 - 4  阅读 - 86116

【转】Delphi POS函数中文处理的问题

复制代码
//delphi漏洞 pos()函数的奇怪现象

edit1.Text := intToStr(pos('',资中市'));
//结果=5,正确.

edit1.Text := intToStr(pos('','资兴市'));
//结果=2 . -_-?

edit1.Text := intToStr(pos('','湖南省郴州市资兴市'));
//结果=11,正确.

edit1.Text := intToStr(pos('','湖南省资兴市郴州市'));
//结果=8 . -_-?

//以上结果都进行调试过,有没高手知道为什么会这样的?

//---------------------------------------------

//因为“资”的后半部分加上“兴”的前半部分就是“市”。
s1:='';
s2:='';
ShowMessage(s1[2]+s2[1]);

//不是漏洞,是由于汉字由两个字节组成的,使用WideString就Ok了
//试试看:
edit1.Text := intToStr(pos('',WideString('资中市')));
//结果=3,正确.

edit1.Text := intToStr(pos('',WideString('资兴市')));
//结果=3
复制代码
posted on   唐朝t  阅读(1155)  评论(0编辑  收藏  举报
< 2011年9月 >
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示