通过从这里下载“ EncryptedZipFile ”模块,您可以使用密码进行存档。例如,使用密码“ 1 ”:
var
ef: TEncryptedZipFile;
begin
try
ef := TEncryptedZipFile.Create('1');
try
ef.Open('d:\test.zip', zmWrite);
ef.Add('d:\test.bin', 'd:\test.bin', zcDeflate);
finally
ef.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end;
我尝试解压缩:
var
ef: TEncryptedZipFile;
begin
try
ef := TEncryptedZipFile.Create('1');
try
ef.Open('d:\test.zip', zmRead);
ef.Extract('test.bin', 'd:\test.bin', true);
ef.Close;
finally
ef.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end;
但在我的线上:
ef.Extract('test.bin', 'd:\', true);
给出错误信息:
Project PrArch.exe raised exception class EZipException with message 'The specified file was not found'.
也许我错过了档案。
问题不在于密码
bobbin,而在于方法参数的错误规范。首先,在这段代码中
您提供了一个无效的参数(以粗体突出显示),帮助说明:
就是这样:您必须指定文件名(不一定与磁盘上的文件名相同)。
其次,当打开存档时,你写:
但这是一个无效的参数说明(粗体),因为帮助说明:
即,您不应指定文件的完整路径(及其名称和扩展名),而应指定解压缩存档后应放置文件的驱动器的文件夹\根目录的路径。
解包时出现的错误是由于在原始代码中您在
D:\+处解包存档имя_файла_в_архиве,因此具有该名称的目录D:\test.bin\test.bin不存在。因此,有必要稍微修改Add和方法中指定的参数Extract。我建议你重写你的代码,并且(不要认为它是粗鲁的)经常查看帮助;)
修改后的代码如下。
创建存档:
打开存档(解包):
有用的信息: