delphi的bug ,气的吐血(100分)

  • 主题发起人 主题发起人 rwlin
  • 开始时间 开始时间
这个问题确实头大。
等几天吧,用d2009,string默认是unicode的了。
其实,全部用unicode也不见得效率低,因为nt操作系统的内核api也是unicode的(用字母w结尾)
我们用ansi类型参数调用ansi版的api(用字母a结尾),
而ansi版的api只是把ansi转换为unicode,然后再调用w结尾的api
多跑了一道工序
 
正确结果:
ShowMessage(IntToStr(AnsiPos('一', '我会被气的吐血')));
delphi2009中已经没问题;
ShowMessage(IntToStr(Pos('一', '我会被气的吐血')));
返回0
 
aerobull 正解
看了一下 AnsiPos的源码,有使用 mbTrailByte 函数来检测是否双字节文字防止中途错误拆分。
 
aerobull的方法不错,哈哈
也是一种解决方法...
看看,一探讨就出方案了,哈哈哈..
 
用 AnsiPos 就可以了
 
好啦,结账了,,,大家有份..
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部