先贴代码
var
len,i:integer;
j,k:string;
begin
memo1.Clear;
len:=length(memo2.text);
k:=memo2.text;
for i:=1 to len do
begin
if(ord(memo2.text[i])>=32) and (ord(memo2.text[i])<=126) then
begin
j:=copy(k,1,1);
delete(k,1,1);
memo1.Text:=memo1.text+j;
end
else
if(ord(memo2.text[i])>=127) then
begin
j:=copy(k,1,2);
delete(k,1,2);
memo1.text:=memo1.Text +j;
end;
end;
用上面的方法把MEMO2的内容逐字读取到MEMO1上面 为什么当出现字母和汉字混合时就会出现乱码啊,大家给个解决的方法吧。

解决方案 »

  1.   

    if(ord(memo2.text[i])>=32) and (ord(memo2.text[i])<=126) 字母和汉字混合
      

  2.   

    如果你是读取所有的内容,就不要这么麻烦了。
    memo2.lines.assign(memo1.lines);
      

  3.   

    更简单的: memo1.text := memo2.text 。另外,你用的是 for i:=1 to len,可下面有 copy(k,1,2),delete( k, 1, 2 ),这可会有问题的,i没有跳两个。事实上,你一方面用memo2.text来作比较,一方面用k来操作,不一致。再另外,判断是不是汉字可用API:IsDBCSLeadByte。还可以用CharNext安全地取一个个字符。不过最后,楼主为什么要那么费劲?