首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Pos函数对中文的bug?该怎么处理

2012-03-08 
Pos函数对中文的bug?Delphi(Pascal) codevariTmp: IntegerbeginiTmp : Pos(谢, 巩义市黄)ShowMessa

Pos函数对中文的bug?

Delphi(Pascal) code
var  iTmp: Integer;begin  iTmp := Pos('谢', '巩义市黄');  ShowMessage(IntToStr(iTmp));                                //6  iTmp := Pos(WideString('谢'), WideString('巩义市黄'));      //0  ShowMessage(IntToStr(iTmp));end;




大家试试


[解决办法]
只要转化为WideString就没有问题了
[解决办法]
应该是'谢'这个汉字编码的问题
我换了个'我'第一个输出就是0
[解决办法]
探讨
应该是'谢'这个汉字编码的问题
我换了个'我'第一个输出就是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什么区别

热点排行