Поддержка библиотеки сжатия ZLib

Материал из DRKB


В Delphi 7 официально включена поддержка библиотеки сжатия ZLib. Если у вас более старшая версия посмотрите модули ZLib в дистрибутиве среды (они должны быть на диске но подключать придеться самому).

Библиотеки под разные платформы, среды разработок и документация на сайте www.gzip.org/zlib.

Степень сжатия превосходит алгоритм zip. Максимальная степень сжатия по алгоритму ZLib приближается к степени сжатия упаковщиком RAR.

Модули Zlib, ZlibConst.

При использовании необходимо подключить в описании Uses модуль ZLib.

пример использования:


Компрессия одного потока в другой[править | править код]

procedure ComressStream(ASource, ATarget: TStream; compressionRate: TCompressionLevel);
var
  comprStream: TCompressionStream;
begin
  // compression level : (clNone, clFastest, clDefault, clMax)
  comprStream := TCompressionStream.Create(compressionRate, ATarget);
  try
    comprStream.CopyFrom(ASource, ASource.Size);
    comprStream.CompressionRate;
  finally
    comprStream.Free;
  end;
end;


Декомпрессия одного потока в другой:

procedure DecompressStream(ASource, ATarget: TStream);
var
  decompStream: TDecompressionStream;
  nRead: Integer;
  buffer: array[0..1023] of Char;
begin
  decompStream := TDecompressionStream.Create(aSource);
  try
    repeat
      nRead := decompStream.Read(buffer, SizeOf(buffer));
      ATarget.Write(buffer, nRead);
    until nRead = 0;
  finally
    decompStream.Free;
  end;
end;


Author: RoboSol
Source: Взято из http://forum.sources.ru
ID: 03193