Компонент TIdComproessorZLib используется для сжатия и декомпрессии в библиотеке Indy Delphi/C++ Builder. Метод CompressStream имеет следующее определение:Где указаны параметры для TIdCompressorZLib.CompressStream метода Indy?
public: virtual __fastcall CompressStream(TStream AInStream, TStream AOutStream, const TIdCompressionLevel ALevel, const int AWindowBits, const int AMemLevel, const int AStrategy);
Полное описание этих параметров в файле справки является:
CompressStream является публичной переопределяется процедурой. который реализует абстрактную форму виртуального метода, объявленного в классе предков.
AInStream - это поток, содержащий несжатое содержимое, используемое в операции .
AOutStream - это поток, используемый для хранения сжатого содержимого от операции сжатия. AOutStream очищается до вывода сжатого содержимого из операции. Когда AOutStream отключен , поток в AInStream очищается и повторно используется для вывода из операции сжатия.
Используйте ALevel, чтобы указать желаемый уровень сжатия для операции .
Используйте AWindowsBits и AMemLevel для управления площадью памяти , необходимой для сжатия в памяти с использованием библиотеки ZLib.
Используйте AStrategy для управления стратегией RLE-кодирования, используемой в операции сжатия .
значения ALevel, определенные на странице справки для TIdCompressionLevel, но я не могу найти какие-либо признаков того, что значения должны быть использованы для AWindowBits, AMemLevel или AStrategy, которые только целые числа.
Я смотрел в исходном коде, но CompressStream только делегаты IndyCompressStream, который указан в файле справки, как:
IndyCompressStream(TStream InStream, TStream OutStream, const int level = Z_DEFAULT_COMPRESSION, const int WinBits = MAX_WBITS, const int MemLevel = MAX_MEM_LEVEL, const int Stratagy = Z_DEFAULT_STRATEGY);
помощь для IndyCompressStream не даже перечислить минимальное описание параметров, CompressStream делает.
Я разыскал файл, где (я думаю) эти константы по умолчанию, указанные в IndyCompressStream жить, источник \ Indy10 \ Protocols \ IdZLibHeaders.pas, и они
Z_DEFAULT_STRATEGY = 0;
Z_DEFAULT_COMPRESSION = -1;
MAX_WBITS = 15; { 32K LZ77 window }
MAX_MEM_LEVEL = 9;
Однако значение, данное для Z_DEFAULT_COMPRESSION
является даже юридическое значение для этого параметра в соответствии с документацией для TIdCompressionLevel
Есть ли какая-то документация где-то о том, что означают AWindowBits, AMemLevel и AStrategy для этого компонента и какие значения разумно использовать для них? Являются ли значения, указанные выше, фактическими рекомендуемыми значениями по умолчанию? Кроме того, исходные файлы включают каталоги indy, indy10 и indyimpl. Какой из них мы должны использовать, чтобы найти источник для текущих компонентов Indy?
Спасибо!
Теперь вот как задать вопрос. Отлично сработано. –
Что с ним делать? –
Имеет ли Indy документацию? –