DELPHI编程流转换如何操作原题是将
   WORD文件加载到控件DBRichEdit中并将内存流进行编码转换成字符串保存到控件
Memo1_Words和控件Memo1_ssBlob中
代码如下:
  if (length(OpenDialog1.FileName)=0 ) then
    begin
     showmessage('没有加载文件');
     exit;
    end;
   MSStream:=TMemoryStream.Create;
  try
     MSStream := TMemoryStream.Create; //  创建内存流
     TSString := TStringStream.Create('');
     
     DBRichEdit.Lines.LoadFromFile(OpenDialog1.FileName);
     DBRichEdit.Lines.SaveToStream(MSStream);     MSStream.Position:=0;
     //引用单元 EncdDecd,才能引用函数EncodeStream和DecodeStream
     //DecodeStream(Tss,Tms);//在这个位置是将base64转为内存流
     EncodeStream(MSStream,TSString);   //将内存流转化base64
     ssBlob:=TSString.DataString;       //转换成 字符串
     Memo1_Words.Text :=ssBlob;         //保存为 字符串
     Memo1_ssBlob.Text :=ssBlob;         //保存为 字符串
  finally
     MSStream.Free;
     TSString.Free;
  end;
//=====================================================================
我现在的问题想再将Memo1_ssBlob内的字符再次转换到控件DBRichEdit02中,
并生成原先的WORD文档内容

解决方案 »

  1.   

    题意:
       将WORD文档加载转换为内存流,编
    码转换(EncodeStream(MSStream,TSString); //将内存流转化base64)成字符串我现在想字符串再次还原成WORD文档
      

  2.   

    楼主的RichEdit控件应该是显示Rtf文件,Word文件的话,RichEdit控件是显示不了的。
    ...
    uses EncdDecd;//RichEdit1,RichEdit2:TRichEdit;
    //Memo1:TMemo;procedure TForm1.Button2Click(Sender: TObject);//打开Rtf文件
    begin
      if not OpenDialog1.Execute then exit;  RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MSStream:TMemoryStream;
      TSString,TSString2:TStringStream;
      ssBlob:string;
    begin
      MSStream:=TMemoryStream.Create;
      try
        MSStream := TMemoryStream.Create; // 创建内存流
        TSString := TStringStream.Create('');
        try
          RichEdit1.Lines.SaveToStream(MSStream);      MSStream.Position:=0;
          //引用单元 EncdDecd,才能引用函数EncodeStream和DecodeStream
          //DecodeStream(Tss,Tms);//在这个位置是将base64转为内存流
          EncodeStream(MSStream,TSString); //将内存流转化base64
          ssBlob:=TSString.DataString; //转换成 字符串
          Memo1.Text :=ssBlob; //保存为 字符串      MSStream.Clear;
          Memo1.Lines.SaveToStream(MSStream);
          TSString2:=TStringStream.Create('');
          try
            MSStream.Position:=0;
            DecodeStream(MSStream,TSString2);
            TSString2.Position:=0;
            RichEdit2.Lines.LoadFromStream(TSString2);
          finally
            TSString2.Free;
          end;
        finally
          TSString.Free;
        end;
      finally
        MSStream.Free;
      end;
    end;