Библиотека JEDI JCL Compression не будет открывать составные архивные файлы - PullRequest
11 голосов
/ 04 июля 2011

Сводка:

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

scenerios:

Один архив, сжатый с использованием примера сжатия JCL,-Будет распаковываться как в примере JCL, так и в графическом интерфейсе 7zip.

Составной архив из 7 файлов, сжатых с использованием примера сжатия JCL.-Будет распакован только в 7zip графическом интерфейсе.Не удается распаковать, используя пример JCL.

Один архив, сжатый с помощью графического интерфейса 7zip.-Будет распаковываться как в примере JCL, так и в графическом интерфейсе 7zip.

Составной архив, сжатый более чем 7 файлами с помощью графического интерфейса 7zip.-Будет распакован только в 7zip графическом интерфейсе.Не в состоянии распаковать с использованием JCL

Дополнительная информация

Демонстрация сжатия JCL входит в библиотеку JCL.JCL: 2.2.1.39707zip dll: 9.20.0.0 и 9.65.0.0Пример имени файла в наборе составного архива: "Test Archive.7z.002"Пробовал со сжатием .tar и .7zБыли использованы файлы разных размеров.2048 байт и 2048 КБ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;

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

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

Скотт М.

1 Ответ

2 голосов
/ 29 сентября 2011

Эта ошибка существует в Project JEDI - Отслеживание проблем.

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));

...