procedure TForm1.Button1Click(Sender: TObject);
var str,str1:string;
begin
str:='abcdefggijklmn';
str1:=copy(str,1,13);
showmessage(str1);
end;
var str,str1:string;
begin
str:='abcdefggijklmn';
str1:=copy(str,1,13);
showmessage(str1);
end;
调试欢乐多
function ExtractChineseSTring(csStr:String):STring;
var
i,j:integer;
s:String;
begin
s:='';j:=1;
for i:=1 to length(csStr) do
begin
if Ord(csStr[i]<160) then
begin
s[j]:=csStr[i];
j:=j+1;
end;
end;
Result:=s;
end;
1 全部是SingleByte
2 LeadByte 与 TrailByte 前后紧跟成对出现
思路是这样的,具体实现可能要你自己去写了,好吧
1,判断字符串最后字符是单位字符还是双位字符,如果是单位字符就有可能是半个汉字的情况。
2,汉字的ASCII码都大于127,如果最后字符是单位字符,那就看它的ASCII码是否大于127,如果ASCII码于大于127,那就说明是半个汉字的乱码,去除就可以了。procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2 :string;
begin
Str1 :='asdfsadfasdfadfs'#168;
str2 :=AnsiLastChar(str1);
//AnsiLastChar(const S: string) 获得在一个字符串中最后字符的位置,它支持双字节字符
if (length(Str2)=1) and (ord(Str2[1])>127) then
delete(str1,length(Str1),1);
showmessage(Str1);
end;