Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Сжатие строк


Автор: Burka 5.3.2011, 10:49
Подскажите какой нибудь алгоритм для хорошего сжатия строк. Мне нужно сжимать текстовые строки, которые могут быть размером до 100 мб, для передачи по GPRS.
Я находил только примеры на с++ для файлов, может есть готовые алгоритмы именно для строк?

Автор: Frees 5.3.2011, 11:28
ложи строку в поток, а поток сжимай например этим http://www.componentace.com/zip_component_zip_delphi_zipforge.htm.

Автор: Burka 5.3.2011, 12:05
А как передать этому компоненту поток?
И возможно ли результат получать в качестве строки?

Автор: Snowy 5.3.2011, 15:58
TCompressionStream не годится?

Автор: cat512 5.3.2011, 15:59
Цитата

А как передать этому компоненту поток?

Компоненту можно передать только тот тип данных, реализация которого поддерживается его методами. Если поддержка потока не реализованна, то без модификации компонента никак!
Но можно привести поток к нужному типу даных, или сразу сформировать структуру нужного типа!
Цитата

И возможно ли результат получать в качестве строки?

Т.е. ты разбираться с компонентом не хочешь, а хочешь сразу получить готовое решение???

Автор: ZBugz 5.3.2011, 16:26
http://www.yunqa.de/delphi/doku.php/products/ucl/index?DokuWiki=v2hutgd2fp5d4dojqlk6dg11f7 вот неплохой компонет DIUcl, жмет и строки и файлы, примеры есть по всем.

Автор: Snowy 5.3.2011, 16:37
DiUcl хорош только размером.
Сжатие у него не очень.
Зипфорж создан не для сжатия, а для работы с зип архивами.
Сжатие у zip то же, что и у TCompressionStream - zlib, но результат больше из-за наличия вспомогательной служебной информации.
Если zlib компрессии недостаточно, то нужно подтягивать тяжёлую медленную артиллерию в виде ZLMA компрессора, либо юзать внешний 7zip или WinRAR.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)