1.想把一个richedit里的文件里保存到数据库里,现在想采用流的方式来做,但是不知道语法怎么实现,怎么把stream类数据写到一个字段里。2.并且想把该数据从数据库中读出来,写到硬盘中形成rtf文件,保证richedit里的格式不变。3.如何把TMemoryStream格式的数据转化为TBlobStream格式的数据

解决方案 »

  1.   

    我实现过,不过是用临时文件,好像用流的话格式保存不进去
    const TmpFile:string='C:\Tmp.~rtf';TBlobField(Fields[1]).SaveToFile(TmpFile);//读出
    NewT.Lines.LoadFromFile(TmpFile);//richedit控件加载
    TBlobField(Fields[1]).LoadFromFile(TmpFile);//写入
      

  2.   

    1. var
         Mem:TMemoryStream;
       begin
         try
           Mem:=TMemoryStream.Create;
           PrnModel.Lines.SaveToStream(Mem);  //存入流
           //...
           TBlobField(ClientDateSet1.Fields.FieldByName('字段名')).LoadFromStream(Mem);//写入
         finally
           Mem.Free;
         end;
       end;2、
      var
        FileName: String;
      begin
        //...
        RichEdit1.Lines.SaveToFile(FileName+'.rtf');
      end;3、
      强制转换
      

  3.   

    var
      Mem: TMemoryStream;
      FileName: String;
    begin
      try
        Mem:=TMemoryStream.Create;
        //...
        with ADOQuery1 do
        begin
          close;
          SQL.Text := 'select Image1 from t_1 where id = 1';
          Open;
          TBlobFile(Fields[0]).SaveToStream(Mem);
          //或者TBlobFile(FieldByName('Image1')).SaveToStream(Mem);
        end;
        RichEdit1.lines.LoadFromStream(Mem);  
        RichEdit1.Lines.SaveToFile(FileName+'.rtf'); 
      finally
       Mem.Free;
      end;