我是从一个Memo中取出来,然后把内容写道Word文档中去的,结果发现在Word中每行后又多了四个空行。查原因,发现传给Word的字符串中每行后有“#$A#$A#$A#$A#$D#$A”,我估计#$A#$A#$A#$A就是再多四行。请问我该如何处理呢?

解决方案 »

  1.   

    不行的,我大概有10行数据呢,我怎么COPY掉呀,我本来想用stringreplace的,结果不行
      

  2.   

    以下是我从memo中取出来的string'问:我们是民警,现向你出示人民警察证,你看清楚了吗?'#$A#$A#$A#$A#$D#$A'答:我看清楚了。'#$A#$A#$A#$A#$D#$A'问:现依法对你进行询问,你必须如实回答,不得隐瞒事实或作虚假陈述,否则将承担法律责任;对与本案无关的问题,你有拒绝回答的权利,你听清楚了吗?'#$A#$A#$A#$A#$D#$A'答:我听清楚了。'#$A#$A#$A#$A#$D#$A'问:根据有关法律规定,如果你认为我们与本案有利害关系,可能影响本案的公正处理的,你有申请回避的权利,你需要申请吗?'#$A#$A#$A#$A#$D#$A'答:我不要申请。'#$A#$A#$A#$A#$D#$A'问:你为什么到这儿来?'#$A#$A#$A#$A#$D#$A'答:我收到了你们违法行为处理通知书,说我的机动车有超速行为,我就过来处理。'#$A#$A#$A#$A#$D#$A'问:你所有的机动车是什么车子,有何特征?'#$A#$A#$A#$A#$D#$A'答:小型汽车, 苏D11111。'#$A#$A#$A#$A#$D#$A'问:(出示图像资料)这是你的车吗?'#$A#$A#$A#$A#$D#$A'答:是的,车号为苏D11111小型汽车。'#$A#$A#$A#$A#$D#$A'问:2006年05月15日15时23分,在312国道遥观路段苏D11111号牌的小车是谁驾驶的?'#$A#$A#$A#$A#$D#$A'答:是我。'#$A#$A#$A#$A#$D#$A'问:根据图像资料显示,该苏D11111号牌的小型汽车在2006年05月15日15时23分,在312国道遥观路段路段行驶时速为100km/h,而该路段限速为60km/h,超速67%,对吗?'#$A#$A#$A#$A#$D#$A'答:(看过图像资料)从图像资料显示车速是这样的。'#$A#$A#$A#$A#$D#$A'问:请你在该图像资料上签名。'#$A#$A#$A#$A#$D#$A'答:好的。'#$A#$A#$A#$A#$D#$A'问:请你核对一下笔录,若无差错请签字?'
      

  3.   

    procedure replace(var s:string;const SourceChar:pchar;const RChar:pchar);
    //第一个参数是原串,第二个是模式串,第三个是替换串
    var
     ta,i,j:integer;
     m,n,pn,sn:integer;
     SLen,SCLen,RCLen:integer;//SLen表示原串的长度,SCLen表示模式传的长度,RCLen表示替换串的长度
     IsSame:integer;
     newp:array of char;//用来保存替换后的字符数组
    begin
     SLen:=strlen(pchar(s));SCLen:=strlen(SourceChar);RCLen:=strlen(RChar);
     j:=pos(string(SourceChar),s);
     s:=s+chr(0);ta:=0;i:=j;
     while s[i]<>chr(0) do   //这个循环用ta统计模式串在原串中出现的次数
     begin
       n:=0;IsSame:=1;
       for m:=i to i+SCLen-1 do
       begin
        if m>SLen then begin IsSame:=0;break; end;
        if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;
        n:=n+1;
       end;
      if IsSame=1 then begin ta:=ta+1;i:=m; end else i:=i+1;
     end;
     if j>0 then
     begin
      pn:=0;sn:=1;
      setlength(newp,SLen-ta*SCLen+ta*RCLen+1);//分配newp的长度,+1表示后面还有一个#0结束符
      while s[sn]<>chr(0) do //主要循环,开始替换
      begin
       n:=0;IsSame:=1;
       for m:=sn to sn+SCLen-1 do //比较子串是否和模式串相同
       begin
        if m>SLen then begin IsSame:=0;break; end;
        if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;
        n:=n+1;
       end;
       if IsSame=1 then//相同
       begin
        for m:=0 to RCLen-1 do
        begin
         newp[pn]:=RChar[m];pn:=pn+1;
        end;
        sn:=sn+SCLen;
       end
      else
       begin //不同
        newp[pn]:=s[sn];
        pn:=pn+1;sn:=sn+1;
       end;
      end;
      newp[pn]:=#0;
      s:=string(newp); //重置s,替换完成!
     end;
    end;
    将#$A和#$D替换成‘’就行了
      

  4.   

    先去掉里面的子串"#$A#$A#$A#$A#$D#$AUnit   
      SysUtils   
        
      type   
          TReplaceFlags   =   set   of   (rfReplaceAll,   rfIgnoreCase);   
      rfReplaceAll对s中的oldpattern全部替换为newpattern,rfIgnoreCase不区分大小写。   
      function   StringReplace(const   S,   OldPattern,   NewPattern:   string   
      ;   Flags:   TReplaceFlags):   string;   
        
      s:=stringreplace(s,'.','',[rfReplaceAll]);   
      

  5.   

    没用的,我用stringreplace(tem,'#$A#$A#$A#$A','',[rfReplaceAll]);结果根本没有反应的,还是老样子啊
      

  6.   

    stringreplace(tem, #$A#$A#$A#$A, " ",[rfReplaceAll]);
      

  7.   

    StringReplace是可以的,注意不要用十六进制,把它转成10进制试试。这个是我前段时间写的格式化XML语句,跟你的是完全一样的。#13#10也就是#$D#$A了//格式化XML文本,去掉tab和换行
    AXmlDoc.XML.Text := StringReplace(AXmlDoc.XML.Text, #9, EmptyStr, [rfReplaceAll]);
    AXmlDoc.XML.Text := StringReplace(AXmlDoc.XML.Text, #13#10, EmptyStr, [rfReplaceAll]);
      

  8.   

    用copy和pos循环取值,大致算法是只要i:=POS(memo1.text,#$A#$A#$A#$A#$D#$A)不小于1,取的值就累加,while i>0 do  begin  ..... end temp1=temp2,