当一个字符串中包含汉字时,用Length和Pos等字符串函数返回的字符串长度不对;
如有下面用法
   strSql:='select * from tbtest where Name='''测试''' order by name asc';
   nPos:=Pos('order',strSql);
   strSql:=MidStr(strSql,0,nPos-1);
如果strSql语句全是英文此时strSql返回的是order前面的字符串;
但是象上面包含汉字,返回的则是'select * from tbtest where Name='''测试''' ord';此语句不能正确解析汉字的长度,很头痛!我该如何解决,谢谢帮助!

解决方案 »

  1.   

    var
     nPos:integer;
     strSql:string;
    begin
       strSql:='select * from tbtest where Name=''测试'' order by name asc';
       nPos:=Pos('order',strSql);
       strSql:=Copy(strSql,1,nPos-1);
       showmessage(strSql);
    end;
      

  2.   

    呵呵,汉字是特殊字符,有特殊字符时用MidBStr,用copy也可以....
    另外你的'''测试''' 改为''测试'' 
       strSql:='select * from tbtest where Name=''测试'' order by name asc';
       nPos:=Pos('order',strSql);
       strSql:=MidBStr(strSql,0,nPos-1);