DELPHI编程流转换如何操作

山东蓝鸟贵薪 2011-11-07 05:10:37
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文档内容

...全文
244 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2011-11-22
  • 打赏
  • 举报
回复
问题已解决 ,谢谢关注
PaulyJiang 2011-11-22
  • 打赏
  • 举报
回复
好大的鸭梨
山东蓝鸟贵薪 2011-11-22
  • 打赏
  • 举报
回复
山东蓝鸟贵薪 2011-11-22
  • 打赏
  • 举报
回复
太给力了呀
笨熊熊 2011-11-22
  • 打赏
  • 举报
回复
這是轉換流?
baby哥 2011-11-22
  • 打赏
  • 举报
回复
不懂这个
mulk 2011-11-22
  • 打赏
  • 举报
回复
松雨林 2011-11-22
  • 打赏
  • 举报
回复
小松来啦
松雨林 2011-11-22
  • 打赏
  • 举报
回复
小松来啦
山东蓝鸟贵薪 2011-11-11
  • 打赏
  • 举报
回复

努力学习中.............
山东蓝鸟贵薪 2011-11-10
  • 打赏
  • 举报
回复
谢谢赐教,我试试
wdonghai 2011-11-09
  • 打赏
  • 举报
回复
楼主的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;
山东蓝鸟贵薪 2011-11-08
  • 打赏
  • 举报
回复
我又重新整理了一下,
能转换成字符串,但是不能再转换成流呀
山东蓝鸟贵薪 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 robin95314852 的回复:]
你还真是个活宝啊,这个问题你还没解决啊;给你个示例都还没看懂啊?我真是失败啊!
[/Quote]
晕了,电脑中毒了
代码全都没有了呀
Robin95314852 2011-11-07
  • 打赏
  • 举报
回复
你还真是个活宝啊,这个问题你还没解决啊;给你个示例都还没看懂啊?我真是失败啊!
山东蓝鸟贵薪 2011-11-07
  • 打赏
  • 举报
回复
题意:
将WORD文档加载转换为内存流,编
码转换(EncodeStream(MSStream,TSString); //将内存流转化base64)成字符串

我现在想字符串再次还原成WORD文档
山东蓝鸟贵薪 2011-11-07
  • 打赏
  • 举报
回复
WORD文档内容如下:

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧