Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 21.10.2022 во всех областях

  1. Вы ошибаетесь. TZipFile отлично работает с TStream и остальными TMemoryStream, TFileStream и т.д. Вот пример: uses System.Zip; .... procedure TForm1.Test(); var FZip : TZipFile; AArchiveStream : TStream; AFileStreamSource : TStream; ADecompressionStream, AFileStreamDest : TStream; ALocalHeader : TZipHeader; AArchivePath, AFileSourcePath, AFileName : String; begin AArchivePath := 'D:\0\005\test.zip'; AFileSourcePath := 'D:\0\005\test.txt'; AFileName := TPath.GetFileName(AFileSourcePath); // Добавляем в архив AFileStreamSource := TFileStream.Create('D:\0\005\test.txt', fmOpenRead); AArchiveStream := TFileStream.Create(AArchivePath, fmCreate); FZip := TZipFile.Create; FZip.Open(AArchiveStream, TZipMode.zmWrite); FZip.Add(AFileStreamSource, AFileName, TZipCompression.zcDeflate); FZip.Close; FZip.Free; AArchiveStream.Free; // распаковываем из архива FZip := TZipFile.Create; AArchiveStream := TFileStream.Create(AArchivePath, fmOpenRead or fmShareDenyNone); FZip.Open(AArchiveStream, TZipMode.zmRead); FZip.Read(AFileName, ADecompressionStream, ALocalHeader); AFileStreamDest := TFileStream.Create('D:\0\005\test_dest.txt', fmCreate); AFileStreamDest.CopyFrom(ADecompressionStream, ADecompressionStream.Size); AFileStreamDest.Free; ADecompressionStream.Free; FZip.Close; FZip.Free; AArchiveStream.Free; end; В примере берем файл D:\0\005\test.txt и архивируем его в архив 'D:\0\005\test.zip. Потом достаем из этого архива файл test.txt и сохраняем как D:\0\005\test_dest.txt. Все через потоки. Код написан на коленке, при использовании в реальной задаче вам нужно добавить критические секции и обработчики try finally. Кстати вы можете использовать и сжатие BZIP2. В данном примере замените TZipCompression.zcDeflate на TZipCompression.zcBZIP2, ну и самое интересное для разработчика - напишите свою реализацию алгоритма архивирования и зарегистрируйте ее с помощью FZip.RegisterCompressionHandler(TZipCompression.zcBZIP2, .....); Да, это будет не просто, но опыта наберетесь с лихвой.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...