Sco*_*ell 11 compression delphi jedi jedi-code-library
摘要:
我无法让JCL压缩库打开任何跨区档案.它出现了borlands'windows.pas'中定义的错误"(0000001)错误函数";
scenerios:
使用JCL压缩示例压缩的单个存档.
- 将在JCL示例和7zip gui中解压缩.
使用JCL压缩示例压缩的7个文件的跨区存档.
- 只能在7zip gui中解压缩.无法使用JCL示例解压缩.
使用7zip gui压缩的单个存档.
- 将在JCL示例和7zip gui中解压缩.
使用7zip gui压缩超过7个文件的跨区存档.
- 只能在7zip gui中解压缩.无法使用JCL解压缩
额外的信息
JCL压缩演示是JCL库中包含的演示.
JCL:2.2.1.3970
7zip dll:9.20.0.0和9.65.0.0
跨区存档集中的示例文件名:"Test Archive.7z.002"
尝试使用.tar和.7z压缩使用
不同的文件大小.2048字节和2048KB
Delphi 2009.
这是我正在使用的代码.它来自JCL压缩演示.行'TJclDecompressArchive(FArchive).ListFiles'出错.
procedure TFormMain.ActionOpenROExecute(Sender: TObject);
var
ArchiveFileName, Password: string;
AFormat: TJclDecompressArchiveClass;
SplitArchive: Boolean;
begin
if OpenDialogArchiveRO.Execute then
begin
CloseArchive;
ArchiveFileName := OpenDialogArchiveRO.FileName;
SplitArchive := AnsiSameText(ExtractFileExt(ArchiveFileName), '.001');
if SplitArchive then
ArchiveFileName := ChangeFileExt(ArchiveFileName, '');
AFormat := GetArchiveFormats.FindDecompressFormat(ArchiveFileName);
if AFormat <> nil then
begin
if SplitArchive then
ArchiveFileName := ArchiveFileName + '.%.3d';
InputQuery('Archive password', 'Value', Password);
FArchive := AFormat.Create(ArchiveFileName, 0, SplitArchive);
FArchive.Password := Password;
FArchive.OnProgress := ArchiveProgress;
if FArchive is TJclDecompressArchive then
TJclDecompressArchive(FArchive).ListFiles
else
if FArchive is TJclUpdateArchive then
TJclUpdateArchive(FArchive).ListFiles;
ListView1.Items.BeginUpdate;
try
while ListView1.Items.Count < FArchive.ItemCount do
ListView1.Items.Add;
finally
ListView1.Items.EndUpdate;
end;
end
else
ShowMessage('not a supported format');
end;
end;
Run Code Online (Sandbox Code Playgroud)
JCL示例确实知道文件并打开它们.(图片中使用的zip格式.同样的问题).
很可能有人之前遇到过这种情况?
谁能指出我正确的方向吗?
感谢您的时间.
斯科特M.
该错误存在于 Project JEDI - Issue Tracker 中。
http://issuetracker.delphi-jedi.org/bug_view_advanced_page.php?bug_id=5137
两种可能的解决方法
JclCompression.pas
在at中注释以下行procedure TJclSevenzipDecompressArchive.OpenArchive;
并重建包。
// 注释这一行!
SevenzipCheck(InArchive.Open(AInStream, @MaxCheckStartPosition, OpenCallback));
归档时间: |
|
查看次数: |
1987 次 |
最近记录: |