Библиотека JEDI JCL Compression не будет открывать отложенные архивные файлы

Резюме:

У меня возникли проблемы с тем, чтобы библиотека JCL-сжатия могла открывать любые связанные архивы. Он представляет ошибку "(0000001) Неправильная функция", как определено в окнах windows.pas borlands;

scenerios:

Один сжатый архив с использованием примера сжатия JCL.
-Вы разобьем как пример JCL, так и 7zip gui.

Закрепленный архив из 7 файлов, сжатых с использованием примера сжатия JCL.
-Убедитесь в распаковке только 7zip gui. Невозможно распаковать с использованием примера JCL.

Один архив, сжатый с использованием 7zip gui.
-Вы разобьем как пример JCL, так и 7zip gui.

Пространственный архив, сжатый в 7 файлах с использованием 7zip gui.
-Убедитесь в распаковке только 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 байт и 2048 КБ
Delphi 2009.

Это код im, использующий. Его из демо-версии сжатия 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;

Пример JCL знает о файлах и открывает их. (формат zip, используемый в изображении. Такая же проблема). Image of files opened by JCL compression example.

Предположительно, кто-то сталкивался с этим раньше?.
Может ли кто-нибудь указать мне в правильном направлении?
Спасибо за ваше время.

Скотт М.

Ответ 1

Эта ошибка существует в Project JEDI - Issue Tracker.

http://issuetracker.delphi-jedi.org/bug_view_advanced_page.php?bug_id=5137

Два возможных варианта работы

  • Обновите свою установку JCL до последняя ежедневная сборка
  • Прокомментируйте следующую строку в JclCompression.pas в procedure TJclSevenzipDecompressArchive.OpenArchive; и перестройте пакеты.

    //прокомментируем эту строку!
    SevenzipCheck (InArchive.Open(AInStream, @MaxCheckStartPosition, OpenCallback));