Vclzip 内存文件压缩与解压缩问题!

52vc 2010-02-02 04:33:03
一个已经读入内存的文件,如何对它进行压缩。
压缩后如何存成一个文件。
TMemoryStream *InStream=new TMemoryStream();
TMemoryStream *OutStream=new TMemoryStream();
//将文体文件存为stream
RichEdit->SaveRVFToStream(InStream);

//压缩内存中的stream
VCLZip1->ZLibCompressStream(InStream,OutStream);

//存文件 这里不成功
MidStream->SaveToFile("c:\\xcv.zip");
...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
52vc 2010-02-03
  • 打赏
  • 举报
回复
可以了,原来每步都得
OutStream->Position = 0;
十分感谢各位的参与,特别是ccrun.
结贴了。
ccrun.com 2010-02-03
  • 打赏
  • 举报
回复
如果还有问题,每操作一步,检查一下流的Size值。
ccrun.com 2010-02-03
  • 打赏
  • 举报
回复
你这样试试,我没有安装三方组件,不能测试。
TMemoryStream *InStream = new TMemoryStream();
TMemoryStream *MidStream = new TMemoryStream();
TMemoryStream *OutStream = new TMemoryStream();
try
{
SRichViewEdit1->RichViewEdit->SaveRVFToStream(InStream, false);
// 压缩
InStream->Position = 0;
VCLZip1->ZLibCompressStream(InStream, MidStream);
MidStream->Position = 0;
MidStream->SaveToFile("c:\\xcv.zip");
// 解压
VCLZip1->ZLibDecompressStream(MidStream, OutStream);
// 调试时发现OutStream 是NULL
OutStream->Position = 0;
SRichViewEdit2->LoadRVFFromStream(OutStream);
SRichViewEdit2->Format();
SRichViewEdit2->RichViewEdit->Format();
}
__finally
{
delete InStream;
delete MidStream;
delete OutStream;
}
52vc 2010-02-03
  • 打赏
  • 举报
回复
TMemoryStream *InStream=new TMemoryStream();
TMemoryStream *MidStream=new TMemoryStream();
TMemoryStream *OutStream=new TMemoryStream();
SRichViewEdit1->RichViewEdit->SaveRVFToStream(InStream,false);
//压缩
VCLZip1->ZLibCompressStream(InStream,MidStream);
MidStream->Position=0;
MidStream->SaveToFile("c:\\xcv.zip");
//解压
VCLZip1->ZLibDecompressStream(MidStream,OutStream);
//调试时发现OutStream 是NULL
OutStream->Position=0;
SRichViewEdit2->LoadRVFFromStream(OutStream);
SRichViewEdit2->Format();
SRichViewEdit2->RichViewEdit->Format();

delete InStream;
delete MidStream;
delete OutStream;
ccrun.com 2010-02-03
  • 打赏
  • 举报
回复
贴完整代码。
52vc 2010-02-03
  • 打赏
  • 举报
回复
OutStream->Postion=0;//加不加这句都是
OutStream->SaveToFile("c:\\xcv.zip");
文件不是压缩文件总是8字节,不知何故?
52vc 2010-02-03
  • 打赏
  • 举报
回复
写错了
//存文件 这里不成功
OutStream->SaveToFile("c:\\xcv.zip");
ccrun.com 2010-02-02
  • 打赏
  • 举报
回复
保存以前,将MidStream的Postion置为0,如:
...
MidStream->Postion=0;
MidStream->SaveToFile("c:\\xcv.zip");
周药师 2010-02-02
  • 打赏
  • 举报
回复
“MidStream”
是什么?
在上面的处理中未曾出现

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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