L lingmao3 Unregistered / Unconfirmed GUEST, unregistred user! 2010-03-16 #1 edit1.text:='1中英对照'; memo1.text:=copy(edit1.text,1,4);memo2.text:=copy(edit1.text,5,1000);结果是,memo1.text:='1中',memo1.text:='⒍哉'是因为对汉字进行了分割,才出现乱码的.问如何判断当前分割处是汉字?
edit1.text:='1中英对照'; memo1.text:=copy(edit1.text,1,4);memo2.text:=copy(edit1.text,5,1000);结果是,memo1.text:='1中',memo1.text:='⒍哉'是因为对汉字进行了分割,才出现乱码的.问如何判断当前分割处是汉字?
L liuls Unregistered / Unconfirmed GUEST, unregistred user! 2010-03-16 #2 var iByteType: TMbcsByteType;begin // ... iByteType := ByteType(AStr, i); case iByteType of mbLeadByte: // 表示 AStr 在索引 i 处是多字节的首位 mbTrailByte: // 表示 AStr 在索引 i 处是多字节的尾位 mbSingleByte: // 表示 AStr 在索引 i 处是单字节字符 end; // 也就是说当截取到 mbLeadByte 时就会出现你所提出的问题end;
var iByteType: TMbcsByteType;begin // ... iByteType := ByteType(AStr, i); case iByteType of mbLeadByte: // 表示 AStr 在索引 i 处是多字节的首位 mbTrailByte: // 表示 AStr 在索引 i 处是多字节的尾位 mbSingleByte: // 表示 AStr 在索引 i 处是单字节字符 end; // 也就是说当截取到 mbLeadByte 时就会出现你所提出的问题end;
W wangdonghai Unregistered / Unconfirmed GUEST, unregistred user! 2010-03-16 #3 procedure TForm1.Button1Click(Sender: TObject);var str:string; index:integer; function StrTest(const AStr:string;var index:integer):Integer; begin if ByteType(AStr,index)=mbTrailByte then inc(index); result:=index; end;begin edit1.Text:='1中英对照'; str:=edit1.Text; index:=4; StrTest(str,index); edit2.Text:=Copy(str,1,index); index:=5; StrTest(str,index); edit3.Text:=Copy(str,index,1000);end;
procedure TForm1.Button1Click(Sender: TObject);var str:string; index:integer; function StrTest(const AStr:string;var index:integer):Integer; begin if ByteType(AStr,index)=mbTrailByte then inc(index); result:=index; end;begin edit1.Text:='1中英对照'; str:=edit1.Text; index:=4; StrTest(str,index); edit2.Text:=Copy(str,1,index); index:=5; StrTest(str,index); edit3.Text:=Copy(str,index,1000);end;