探讨leftstr函数对中文字符串支持不良的问题? ( 积分: 10 )

  • 主题发起人 主题发起人 幼虫2004
  • 开始时间 开始时间

幼虫2004

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家一起来讨论一下leftstr函数为什么对汉字符串支持不好,

1、原因是什么?
2、有什么规律?

如下例:
var
s,s1,s2,d,d1,d2:string;
begin
s:='大 09:09:09';
s1:='大家 09:09:09';
s2:='大家好 09:09:09';
d:='12 09:09:09';
d1:='1234 09:09:09';
d2:='123456 09:09:09';

showmessage('好好'+leftstr(s,2)+'@'+#13#10+'好'+leftstr(s1,4)+'@'+#13#10+leftstr(s2,6)+'@'+#13#10+leftstr(d,2)+'@'+#13#10+leftstr(d1,4)+'@'+#13#10+leftstr(d2,6)+'@');

end;

当截取汉字符串时,会出现非预期结果。
 
如果用midstr函数替换leftstr函数,结果仍然出错!

但是按照的建议,使用copy函数就正确了。
var
s,s1,s2,d,d1,d2:string;
begin
s:='大 09:09:09';
s1:='大家 09:09:09';
s2:='大家好 09:09:09';
d:='12 09:09:09';
d1:='1234 09:09:09';
d2:='123456 09:09:09';

showmessage('好好'+copy(s,1,2)+'@'+#13#10+'好'+copy(s1,1,4)+'@'+#13#10+copy(s2,1,6)+'@'+#13#10+leftstr(d,2)+'@'+#13#10+leftstr(d1,4)+'@'+#13#10+leftstr(d2,6)+'@');
 
也遇到这样的问题,最后改为COPY了
 
接受答案了.
 
后退
顶部