Delphi 没有足够的存储空间来完成此操作JclCompression

Delphi 没有足够的存储空间来完成此操作JclCompression,delphi,pascal,Delphi,Pascal,我们有一个用delphi编写的commad行实用程序 我们使用JclCompression库来压缩文件 我们的问题是,有时它工作,有时它不工作。 我们正在压缩相同的文件 这是异常日志 2015年6月10日12:25:29存储空间不足,无法完成此操作 2015年6月10日12:25:29 2015年6月10日12:25:27 2015年6月10日12:25:29[006CB7F6]JclCompression.TJclSevenzipUpdateArchive.Compress(第8867行,“J

我们有一个用delphi编写的commad行实用程序

我们使用JclCompression库来压缩文件

我们的问题是,有时它工作,有时它不工作。 我们正在压缩相同的文件

这是异常日志

2015年6月10日12:25:29存储空间不足,无法完成此操作 2015年6月10日12:25:29 2015年6月10日12:25:27

2015年6月10日12:25:29[006CB7F6]JclCompression.TJclSevenzipUpdateArchive.Compress(第8867行,“JclCompression.pas”+16)+$2E

2015年6月10日12:25:29(0000EE08)[0040FE08] 2015年6月10日12:25:29[006CB7F6]JclCompression.TJclSevenzipUpdateArchive.Compress(第8867行,“JclCompression.pas”+16)+$2E

2015年6月10日12:25:29(00008BF2)[00409BF2] 2015年6月10日12:25:29[017674FD]DlDMUn.TdlDM.ExecuteZip(第4766行,“DlDMUn.pas”+59)+16美元

2015年6月10日12:25:29[01770992]DlDMUn.TdlDM.ExecutePackageItem(第6229行,“DlDMUn.pas”+59)+$4

2015年6月10日12:25:29[01749973]DlDMUn.TdlDM.ExecutePackage(第498行,“DlDMUn.pas”+16)+$4

2015年6月10日12:25:29[0174969E]DlDMUn.TdlDM.Execute(第450行,“DlDMUn.pas”+29)+7美元


2015年6月10日12:25:29[017D8E31]cl.cl(第108行,“cl.dpr”+19)+$7

解压时,我也遇到了同样的问题,但在我的例子中,我试图解压一个文件,解压后的文件已打开并已存在于同一位置。您应该按照“arich”的建议查看代码并记录结果复制。

运行SysInternal Process Monitor并记录程序的文件活动(其他类型的活动不相关)。最可能发生的情况是,当7-zip.org更新一个大型归档文件时,它需要两倍的磁盘可用空间来创建一个临时归档文件,并将所有未更新的文件从旧归档文件克隆到新归档文件。因此,当没有足够的可用空间来放置归档文件副本时,Arioach已经说过,您的系统驱动器上需要一些exta空间来存储临时文件。另一个原因可能是在您的磁盘驱动器(系统或目标驱动器)上使用FAT32分区,这限制了您的文件容量为3GB或更低。我有很多磁盘空间,zip文件大小只有7兆。那么磁盘空间不是你从未听说过的“压缩炸弹”的问题吗?嗯,也许zip格式不是7-zip所能理解的,也许是密码之类的。我认为你必须1)在出现问题时使用ProcMon使你的应用程序的文件I/o日志2)使你的程序保存失败的任务,复制zip文件,将你需要更新的所有额外数据复制到一个专用磁盘上,以便重播样本,这样你就能够复制它。