Сжать файл с помощью JclCompression - PullRequest
2 голосов
/ 07 ноября 2011

Я пытаюсь сохранить (сжать) файл .zip, используя JclCompression с JCL Demo.Когда я нажимаю кнопку «Сохранить» на вкладке «Чтение и запись», демонстрационные вызовы:

procedure TFormMain.ActionSaveExecute(Sender: TObject);
begin
  (FArchive as TJclCompressArchive).Compress;
  CloseArchive;
end;

При выполнении (FArchive as TJclCompressArchive).Compress; возникает исключение: «По крайней мере один том сжатия не может быть заменен после выхода архиваобновление ".Также иногда, когда я нажимаю кнопку «Сохранить», в заголовке формы появляется «приложение не отвечает», поэтому мне нужно закрыть демонстрацию.

Правильно ли этот код или мне нужно изменить его, чтобы успешно сжатьи сохранить файл zip?Существуют ли другие демонстрационные примеры для JclCompression, чтобы я мог научиться использовать эти классы?

Помимо этой проблемы, похоже, что демонстрационная версия работает правильно.Я могу открыть zip-файл, создать новый zip-файл, добавить файлы, добавить файлы из каталога, извлечь выбранные файлы, извлечь все и получить свойства zip-файла.Сохранение кажется проблемой.

Я использую Delphi 2010 в Windows 7.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Та же проблема, что и у jedi-jcl-сжатия-library-wont-open-spanned-archive-files. JEDI Библиотека сжатия JCL не будет открывать составные архивные файлы

Используемая версия JCL-JVCL глючная .
Я бы порекомендовал обновить вашу установку JCL до последней ежедневной сборки

0 голосов
/ 29 октября 2015

Я видел это сообщение об ошибке, когда файлы, которые я хотел заархивировать, были открыты для записи, поэтому вам нужно закрыть их или заранее скопировать во временную папку.Также, если вы используете функцию Create7zArchive (), как мне, вам нужно 7z.dll, помещенный в выходную папку вашего бина.Это печально, но, похоже, JCL не использует Zlib.pas, который уже интегрирован в Delphi.

JCL 2.7.0.5676 (стабильный)

...