从QQ聊天记录中Copy出来的代码不能编译,回车都成了黑色的正方形,用这个函数可以解决问题
原理很简单,就是替换#13为#13#10   
procedure ConvertQQMsg(Lines: TMemo);
var
  TmpStrList: TStrings;
begin
  TmpStrList := TStringList.Create;
  try
    TmpStrList.Text := Lines.Lines.Text;
    TmpStrList.Delimiter := #13;
    Lines.Lines.DelimitedText := TmpStrList.DelimitedText;
  finally
    TmpStrList.Free;
  end;
end;

解决方案 »

  1.   

    遇到过这个问题!
    保存到txt文件是这个问题。
    保存到doc文件就不需要了!
      

  2.   

    研究了一下 下面是DilimitedText的DescriptionUse DelimitedText to get or set all the strings in the TStrings object in a single string. When reading DelimitedText, the resulting value delimits individual strings in two ways: each string is surrounded (before and after) by the quote character specified by the QuoteChar property. In addition, individual strings are separated by the character specified by the Delimiter property. When writing DelimitedText, individual strings must be separated using QuoteChar at both ends, using Delimiter as a separator, or using both these methods.Note: CommaText is the same as the DelimitedText property when Delimiter is ',' and QuoteChar is '"'.我试了试这两句,好像没法把Memo1里边的'A'变成#13#10
    Memo1.Lines.Delimiter:='A';
    Memo2.Lines.DelimitedText:=Memo1.Lines.DelimitedText;
        TmpStrList.Text := Lines.Lines.Text;
        TmpStrList.Delimiter := #13;
        Lines.Lines.DelimitedText := TmpStrList.DelimitedText;
    大概有问题 应该改成这样吧
        TmpStrList.Text := Lines.Lines.Text;
        Lines.Lines.Delimiter := #13;
        Lines.Lines.DelimitedText := TmpStrList.Text;
      

  3.   

    to: yayx(yayx)Showmessage(TmpStrList.Text +#13'======'#13+TmpStrList.DelimitedText);Lines.Lines.DelimitedText := TmpStrList.Text;
    //你的方法会把空格也分行
      

  4.   

    to: lw549(那个孩子他爹|廉者不受接来之分|爱在美元前)-----------------------------------
    懂了 不能直接用TmpStrList.Text 不过TmpStrList.Delimiter := #13;不对,应该是 Lines.Lines.Delimiter := #13;
    也就是这样,D7下边试过没问题
        TmpStrList.Text := Lines.Lines.Text;
        Lines.Lines.Delimiter := #13;
        Lines.Lines.DelimitedText := TmpStrList.DelimitedText;
      

  5.   

    又有问题
    改成
        TmpStrList.Text := Lines.Lines.Text;
        Lines.Lines.Delimiter := #13;
        Lines.Lines.DelimitedText := TmpStrList.DelimitedText;  之后
    #13可以被隔开了 空格也不会换行了,但是如果这行既有#13又有空格,这行的#13会被保留
    原因是空格会让原来的Text被QuoteChar括起来,直接引用了
    还是搞不懂DelimitedText应该怎么用还是不这样做了,直接搜索#13替换成#13#10得了 呵呵
      

  6.   

    也就是这样,D7下边试过没问题
        TmpStrList.Text := Lines.Lines.Text;
        Lines.Lines.Delimiter := #13;
        Lines.Lines.DelimitedText := TmpStrList.DelimitedText;
    ========================
    D6下测试结果不正确
    加了很多双引号和逗号
    原因参见TStrings.CommaText的帮助测试数据,任意copy一段聊天记录即可
      

  7.   

    >>还是不这样做了,直接搜索#13替换成#13#10得了 呵呵
    这样做也有一个问题,不能多次重复操作第一次
    #13=>#13#10第二次
    #13#=>#13#10#10第n次
    #13=>#13+ n 个 #10