原程序:
RichEditTransFile.Lines.Clear;
RichEditTransFile.PlainText:=False;
RichEditTransFile.Lines.LoadFromFile('d:\test.rtf');
RichEditTransFile.PlainText:=True;
RichEditTransFile.Lines.SaveToFile('d:\test.rtf.txt');
我企图用TStingList来处理:
StringList:=TStringList.Creat;
StringList.Clear;
StringList.Text:=GetFileText('d:\test.rtf)';
StringList.SaveToFile('d:\test.rtf.txt')
StringList.Free;
结果发现这样转存的纯文本文件是空的。
我想问问请问除了用RichEdit部件能处理.Rtf文件,还有什么部件或方法来处理呢?因为RichEdit部件有一个Bug,在WindowsMe系统下,这样转存一批RTF文件的第一个文件会带有格式,尽管我用了RichEditTransFile.PlainText:=True;在WindowsXP下这样转存一批RTF文件的第一个文件会变成二进制文件,用记事本打开时出现提示:“这个文件不是有效的文本文件,可能是二进制文件,是否转换并载入?”结果导致了原来RTF文件中设有隐藏的部分丢失。

解决方案 »

  1.   

    To bryantd (Delphi菜鸟):
        楼主说的这么详细,想必已经经过了许多测试,好象我没有了办法。尽管如此,希望楼主想想别的办法,比如可以取RichEditTransFile.Lines.Text看看,不过这样笃定没有格式的。对于第一个会变成二进制文件的问题,可以采取更变态的手段(欺骗性的),比如首先转换一个无用的文件,然后转换需要的文件,最后将第一个转换的无用的文件删除掉(用程序自动删除,用户无感知)。当然以上都非好办法,我想这个问题有些冷,帮你Up!
      

  2.   

    RichView组件可以。在WindowsMe系统下,这样转存一批RTF文件的第一个文件会带有格式,尽管我用了RichEditTransFile.PlainText:=True;在WindowsXP下这样转存一批RTF文件的第一个文件会变成二进制文件,用记事本打开时出现提示:“这个文件不是有效的文本文件,可能是二进制文件,是否转换并载入?”结果导致了原来RTF文件中设有隐藏的部分丢失。
    这个是没有道理的,估计是你的代码问题!
      

  3.   

    To creativepeter(头皮屑) :您说的变态办法我也想到了,我就是觉得不甘心所以才来请教大家的,哈哈。那样做就成了黑匣子了,嘿嘿。谢谢你帮我Up。
    To  li_chengbin(瞌睡虫)我也知道这样没道理,而且这样的错误还是偶尔发生的,无法找到任何规律!所以我觉得不是我的操作系统有问题,就是Delphi的一个Bug,不过我在别的机器上测试也出现了同样的问题,所以我觉得它是个Bug。请问RichView组件实现我这个功能和RichEdit的方法一样吗?这个组建在选项卡里的什么地方啊?
      

  4.   

    RichVeiw在选项卡里什么地方啊??
    顺便问一下:如果知道组件的名字,怎么最快找到他?(具体方法给忘记了)
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      fs                : TFileStream;
      s                 : string;
    begin
      fs := TFileStream.Create('temp.txt', fmCreate or fmOpenWrite);
      richedit1.SelectAll;
      s := richedit1.SelText;
      richedit1.SelLength := 0;
      fs.Write(PChar(s)^, Length(s)); 
      freeandnil(fs);
    end;
    我试过了中,英文都可以,不用那么麻烦的
      

  6.   

    楼上的朋友能解释一下您的过程吗?我对TStream类不是很了解