| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Распаковка GZIP |
| Автор: VICTAR 19.3.2007, 23:20 | ||
Имеем строку, запакованную GZIP
Каким образом её можно распаковать? Спасибо. |
| Автор: Snowy 19.3.2007, 23:39 |
| Весьма информативная строчка Сходи на torry и скачай компонент для работы с Gzip ;-) |
| Автор: VICTAR 20.3.2007, 00:18 | ||
| Уже сходил, скачал, спасибо, не помогло http://www.torry.net/vcl/compress/std/compressD7.zip как я понял, он распаковывает только файлы, хотелось бы работать со стримами. Описываю проблему подробнее: в http://agent.mail.ru/protocol.html?Submit=%CF%F0%E8%ED%E8%EC%E0%FE+%F1%EE%E3%EB%E0%F8%E5%ED%E8%E5(протокол mailagent`a) rtf-часть сообщения выглядит как:
Если кто-то сталкивался с этим делом, откликнитесь. |
| Автор: MetalFan 20.3.2007, 09:10 |
| так сначала надо раскодировать base64, а потом уже пытаться распаковать gzip'ом. и что все бросились mail-агенты писать?! |
| Автор: VICTAR 20.3.2007, 10:22 |
Ну я не совсем Сейчас так модно |
| Автор: MetalFan 20.3.2007, 11:08 | ||
| в JVCL есть вроде компонент и класс, что с потоками(или буферами) может работать... я его примерно так юзал:
если надо, могу попробовать выдрать необходимое для работы без всей jcl|jvcl |
| Автор: MetalFan 20.3.2007, 12:31 |
| Snowy, да? пасиб, не знал. просто думал в D6 нет его... поискал - есть Zlib.dcu... кста, там есть TDecompressionStream... |
| Автор: Snowy 20.3.2007, 14:43 |
| Да есть. Просто лень было проверять на идентичность - взял код, применяемый для распаковки GZip в http. Добавлено @ 14:44 А, ну да. Для распаковки через TDecompressionStream необходимо знать исходный размер несжатых данных. А нам он не известен. |
| Автор: VICTAR 20.3.2007, 16:39 |
| MetalFan, Snowy, бАльшое спасибо |
| Автор: Igor_thief 28.10.2008, 12:33 |
| VICTAR, а где потом распаковываешь? Из Дельфи программы или ... ? Просто у меня похожая задача и никак не получается запакованую и замаймленую в Дельфи строку разжать в C#. |
| Автор: Alexeis 28.10.2008, 13:08 |
| Igor_thief, дали же наводку. Создаешь поток TFileStream или TMemoryStream, который будет содержать то что упаковано, затем создаешь TDecompressionStream, извлекаешь в другой TMemoryStream, после чего достаешь данные из base64 (реализаций извлечения из base64 навалом). |
| Автор: Igor_thief 28.10.2008, 13:28 |
| Alexeis, Читай внимательней то что я написал! Если бы все делалось в одной программе, то все было бы просто (или даже на одном компе). Но задача куда сложнее. Упаковываться и передаваться по инету должна строка. Задача уже решена! |