怎样把文件压缩成zip格式? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调用压缩程序(如winzip/winrar)命令行方式,动态生成所需参数即可 使用组件VCLZIP,这样不需要别的程序支持 Java也可以!而且压缩率比原来的zip压缩还要大 我不想使用命令行的方式,因为这需要系统事先装winzip等软件,有没有其它方法?VCLZIP不是DELPHI自带的吧?到哪里找它呢?使用时会不会有限制,或是我不想看到的提示界面? 哎,有替别人做广告了。你可以去http://www.pigtwo.com/CtrlData/CtrlData.htm下载。 有没有调用DLL,在程序里面压缩的? 下面是我项目中的一段代码,用的是VCLZip。请看一下吧。function Zip(ZipMode,PackSize:Integer;ZipFile,UnzipDir:String):Boolean; //压缩或解压缩文件var ziper:TVCLZip;begin //函数用法:Zip(压缩模式,压缩包大小,压缩文件,解压目录) //ZipMode为0:压缩;为1:解压缩 PackSize为0则不分包;否则为分包的大小 try if copy(UnzipDir, length(UnzipDir), 1) = '\' then UnzipDir := copy(UnzipDir, 1, length(UnzipDir) - 1); //去除目录后的“\” ziper:=TVCLZip.Create(application); //创建zipper ziper.DoAll:=true; //加此设置将对分包文件解压缩有效 ziper.OverwriteMode:=Always; //总是覆盖模式 if PackSize<>0 then begin //如果为0则压缩成一个文件,否则压成多文件 ziper.MultiZipInfo.MultiMode:=mmBlocks; //设置分包模式 ziper.MultiZipInfo.SaveZipInfoOnFirstDisk:=True; //打包信息保存在第一文件中 ziper.MultiZipInfo.FirstBlockSize:=PackSize; //分包首文件大小 ziper.MultiZipInfo.BlockSize:=PackSize; //其他分包文件大小 end; ziper.FilesList.Clear; ziper.ZipName := ZipFile; //获取压缩文件名 if ZipMode=0 then begin //压缩文件处理 ziper.FilesList.Add(UnzipDir+'\*.*'); //添加解压缩文件列表 Application.ProcessMessages; //响应WINDOWS事件 ziper.Zip; //压缩 end else begin ziper.DestDir:= UnzipDir; //解压缩的目标目录 ziper.UnZip; //解压缩 end; ziper.Free; //释放压缩工具资源 Result:=True; //执行成功 except Result:=False;//执行失败 end;end; 举例说明用 with 时的某种情形 奇怪哟,keybd_event居然不能摸拟句点, 其它的都可以! 想在自己的应用程序中做一个类似IDE设计窗口的应用界面,有点困难,谁有这样的代码,帮帮忙了!多谢。。。。 用IntraWeb开发的网站,只开发了1/4就没信心了。请熟悉的同行帮我看看。 谁能写出这个SQL语句,我服了谁 如何判断数据库中表或视图是否存在? 请问关于数据的显示操作. 救命:dbgrid的小问题? 菜鸟的问题!! 除了Delphi还该不该会Vc? Tmscomm控件问题?? 大量问题求助,100分送上!
用的是VCLZip。
请看一下吧。function Zip(ZipMode,PackSize:Integer;ZipFile,UnzipDir:String):Boolean; //压缩或解压缩文件
var ziper:TVCLZip;
begin
//函数用法:Zip(压缩模式,压缩包大小,压缩文件,解压目录)
//ZipMode为0:压缩;为1:解压缩 PackSize为0则不分包;否则为分包的大小
try
if copy(UnzipDir, length(UnzipDir), 1) = '\' then
UnzipDir := copy(UnzipDir, 1, length(UnzipDir) - 1); //去除目录后的“\”
ziper:=TVCLZip.Create(application); //创建zipper
ziper.DoAll:=true; //加此设置将对分包文件解压缩有效
ziper.OverwriteMode:=Always; //总是覆盖模式
if PackSize<>0 then begin //如果为0则压缩成一个文件,否则压成多文件
ziper.MultiZipInfo.MultiMode:=mmBlocks; //设置分包模式
ziper.MultiZipInfo.SaveZipInfoOnFirstDisk:=True; //打包信息保存在第一文件中
ziper.MultiZipInfo.FirstBlockSize:=PackSize; //分包首文件大小
ziper.MultiZipInfo.BlockSize:=PackSize; //其他分包文件大小
end;
ziper.FilesList.Clear;
ziper.ZipName := ZipFile; //获取压缩文件名
if ZipMode=0 then begin //压缩文件处理
ziper.FilesList.Add(UnzipDir+'\*.*'); //添加解压缩文件列表
Application.ProcessMessages; //响应WINDOWS事件
ziper.Zip; //压缩
end else begin
ziper.DestDir:= UnzipDir; //解压缩的目标目录
ziper.UnZip; //解压缩
end;
ziper.Free; //释放压缩工具资源
Result:=True; //执行成功
except
Result:=False;//执行失败
end;
end;