气死我,POS函数有“BUG”,哪位大侠帮助重写一个。(50分)

  • 主题发起人 主题发起人 jobsxy
  • 开始时间 开始时间
J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
if pos('酒','吸尘器材')>0 Then
showmessage('酒 居然包含于 吸尘器材??');

后来我发现这问题出在全角与半角,即“酒”与尘的右半部分+器的左半部分相同造成的,于是我自个写了个过程逐一判断,问题好象是解决了,但后又一想,不对,如果是
if pos('酒精','吸尘器材')>0 Then ;
假如“精”与器的右半部分+材的左半部分相同怎么办?实际应用中很可能出现这种情况。

怎样才能高效、精确地实现“POS”功能呢?
只好求救于各路大侠了!
 
那是你自己的问题,
var
s1, s2: WideString;
s1 := '酒';
s2 := '吸尘器材';
就没事了。
 
哦,果真这样写就好了,不过我还是觉得这个POS太弱了.

我程序里许多地方都有诸如pos(EDIT1.text,mylist.string)这样的东东,现在都要逐一改过来,太烦了.
 
看看还有没有别的高见,然后就结帐。
 
没有别的办法了,只要是汉字,就存在这个编码的问题。只能转换成widestring类型才行。
 
同意楼上的。对于汉字确实要这样解决。
 
:) 不错 不错
 
沒試過﹐不知是否可行?

function AnsiPos(const Substr, S: string): Integer;

Note: This function supports multi-byte character sets (MBCS).
 
luweizhong:果然好使,谢谢了,看来这分非你所得不可了。
 
后退
顶部