我在oracle中建了一个BLOB字段,通过RzRicheEdit从*.Doc中读取数据并显示,*.Doc文件里包含图片,结果显示正常。然后利用TStrream存储到BLOB中。
在显示的时候,把BLOB读到STReam里,然后用RzRicheEdit.LoadFromStream读到RzRichEdit里,结果总是显示乱码,请问各位专家,这是怎么回事?
显示之前,已经设置过Stream.Position=0了。
另外,我想了解一个RichEdit是怎样对RTF文件进行解析的,大家有什么建议或资料吗?谢谢了!!!
能给的分不多了,请大家谅解!!!!!!!!

解决方案 »

  1.   

    使用TBlobField怎么存进去怎么取出来,可以使用pl/sql工具查看一下存入的内容和你取出的是不是一样的
      

  2.   

    你的文件肯定不是RzRichEdit格式的吧,估计是标准rechedit的,RzRichEdit是第三方raize的,他支持的格式更丰富一些,与标准richedit不一样的
      

  3.   

    你从Oracle里读出来的时候,把BLOB读到STReam里,先不用RzRicheEdit.LoadFromStream读到RzRichEdit里,先存成文件,看看是不是正确的,建议你存入时文件读到FileStream,放入缓冲区,然后TStram在从缓冲区中读入,存到数据库。把你存入读取的代码贴出来看看,可能有不合理的地方
      

  4.   

    我是通过ADOQUERY把数据存到ORACLE里,代码是:
        Close;
        SQL.Clear;
        SQL.Add('update test_for_blog set rtf_file=:rtf_file');
        Parameters.ParamByName('rtf_file').LoadFromFile('D:\我的文档\delphi测试文档.rtf',ftblob);
        EXECSQL;
        ADOQCONNECTION1.CommitTrans;
    读取代码是:
        Close;
        SQL.Clear;
        SQL.Add('select rtf_file from test_for_blog');
        Open;
        TBLOBFIELD(FieldByName('rtf_file')).SaveToStream(v_stream);
    写到RzRichEdit里的代码是:
      stream.Position:=0;
      RxRichEdit1.Lines.LoadFromStream(v_stream);
    结果显示乱码;如果把上面这句改成:
      TBLOBFIELD(ADOQuery1.FieldByName('rtf_file')).SaveToFile('temp.rtf');
      rxrichedit1.Lines.LoadFromFile('temp.rtf');
    结果显示就正常了。
      

  5.   

    Sorry,我在问题描述里边说是*.doc文件,其实用的是*.rtf文件,抱歉!!!
      

  6.   

    stream的memory里面的内容可不完全是你的文件内容
      

  7.   

    抱歉来晚了,年底的时候杂事太多了。已经搞定了,马上给分,只是还想多问一点:
    oracle能自己解析rtf文件吗?delphi里面的richedit控件是怎样控件解析rtf文件的,因为现在它不支持直接拷贝表格,很是麻烦。