要实现汉字和西文的换行,字符截取如何避免出现乱码?(100分)

  • 主题发起人 主题发起人 gery
  • 开始时间 开始时间
G

gery

Unregistered / Unconfirmed
GUEST, unregistred user!
就是如何判断双字节是否为汉字?
 
widestring是双字节的,不管是否汉字你都无法截取,你都应换行
ws:widestring;
s;string;
ws:=s
 
使用IsDBCSLeadByte函数,如果是双字节文字的第一个字节,则返回True。
 
自己解决了不过还是谢谢各位!
function cutstring(var str : String;
num:integer) : String;
var i:integer;
begin
i:=1;
if length(str)>0 then
begin
while (i <= num ) do
begin
if (Ord(str)>=129) and (Ord(str[i+1])>=64 ) then
begin
if(i>=num-2) then
begin
Result :=copy(str,1,i+1);
Delete(s,1,i+1);
break;
end;
Inc(i, 2);
end
else
begin
if str=chr(13) then
begin
Result :=copy(str,1,i);
Delete(s,1,i);
break;
end;
if(i=num) then
begin
Result :=copy(str,1,i-1);
Delete(s,1,i-1);
break;
end;
inc(i);
end;
end;
end
else
Result :='';
end;
 
后退
顶部