Сжать файл с помощью JclCompression
Я пытаюсь сохранить (сжать) файл.zip с помощью JclCompression
с демонстрацией JCL. Когда я нажимаю кнопку "Сохранить" на вкладке "Чтение и запись", демонстрационные вызовы:
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 ответа
Та же проблема, что и у jedi-jcl-сжатия-library-wont-open-spanned-archive-files. Библиотека JEDI JCL Compression не будет открывать составные архивные файлы
Используемая вами версия JCL-JVCL содержит ошибки.
Я бы порекомендовал обновить вашу установку JCL до последней ежедневной сборки
Я видел это сообщение об ошибке, когда файлы, которые я хотел заархивировать, были открыты для записи, поэтому вам нужно закрыть их или заранее скопировать во временную папку. Также, если вы используете функцию Create7zArchive(), как мне, вам нужно 7z.dll, помещенный в выходную папку вашего бина. Это печально, но, похоже, JCL не использует Zlib.pas, который уже интегрирован в Delphi.
JCL 2.7.0.5676 (стабильный)