关于COPY函数的问题(50)

  • 主题发起人 主题发起人 卖女孩的小火柴之二
  • 开始时间 开始时间
应该考虑 WideString
 
WideString 这个不行它是把一个汉字和一个英文或者数字都当一个字符来处理的!
 
改用widestring就行了,因为在中英文混合排列时STRING就会截断的,出现乱码!
 
widestring可以。var s: WideString;begin s := '我爱/国际米兰'; s := Copy(s, 1, 5); edt1.Text := s;end
 
这个本来就是很简单,先判断第30个字符,如果是汉字,截取前29个,补个空格,否则直接取30个,明白了原理,自己写个判断,也就是几句话这种汉字半字节处理的问题,10多年前就讨论烂了
 
function StringLeft(AText: String; ACount: Integer): String;var Index, i, j : Integer; str : string;begin str :=AText; i := ACount; if i < Length(str) then //是够剪切长度 begin Index := Ord(str); //读取长度最后一个字节的ASCII码 if Index > 127 then Result :=Copy(str,1,i-1) //是汉字就向前取一位,减少一个字节的长度 else Result :=Copy(str,1,i); end else Result := str;end;这个函数搞定了! 和 stlont 说的原理说的一样
 
接受答案了.
 
后退
顶部