delphi解压文件问题

来源:百度知道 编辑:UC知道 时间:2024/06/12 23:06:54
主要代码如下:
begin
With myZip do
begin
ZipName := inzip.Text;//ZIP文件名
Destdir:=outdir.Text;//解压到的目录
FilesList.Add('*.*');
DoAll := true;
if incpw.Checked then
password:=pwe.Text;//密码
Recurse := True; //* Recurse directories */
StorePaths := true; //* Keep path information */
DoAll := False;
unzip;
end;
end;
但是在解压文件的时候,如果要解压的目录里有相同的文件,他会提示是否替换。请教大家,如何才不会提示,直接复制替换原有的文件
ihzuq朋友你写的这个不管用啊,还是会有提示,再有就是压缩包里如果有文件夹存在的话,他不把文件夹也解压出来而是把文件夹里面的文件解压出来。这个怎么解决啊

先不带密码尝试解压一次或者获取信息一次,如果失败了就说明有密码。
代码:
procedure TForm1.btn1Click(Sender: TObject);
begin
UnZip1.OnBadPassword:=UnZip1BadPassword;
UnZip1.ArchiveStream:=TFileStream.Create('F:\古书.zip',fmOpenRead);
if UnZip1.CheckArchive then
begin
showmessage('No Pass');
UnZip1.ArchiveStream.Free;
exit;
//无密码,不解压
end;
//解压过程,略。
UnZip1.ArchiveStream.Free;
end;

procedure TForm1.UnZip1BadPassword(Sender: TObject; FileIndex: Integer;
var NewPassword: String);
begin
NewPassword:='123456'; //123456是真实的密码,这一步可以省
end;

呵呵,,我给你一个解决的办法吧,看你的代码就知道你是下载VCLZIP组件。。
建议你用VCLunzip组件:解压代码如下:
UnZip1.ZipName:='c:\Upx.zip';//zip所在目录
UnZip1.ReadZip;
UnZip1.FilesList.Add('*.*');
UnZip1.FilesList.Add(UnZip1.Filename[UnZip1.Count-1] );
UnZip1.DoAll:=false;
UnZip1.DestDir:='c:\';//指定目录
UnZip1.RecreateDirs