Посоветуйте пожалуйста как (чем) можно распаковать GZIP файл у которого удалена информация о файле (т.е. тип файла, тип архива, CRC, размер исходного файла и т.д.), т.е. имеется только кусок архивированных данных. Модуль GZIO я так понимаю может работать только с "честными" файлами имеющими правильную структуру.
Добавлено спустя 4 часа 22 секунды:
Посмотрел по встроенным возможностям, вроде ZLIB может подойти для этих целей, но чтото при добовлении в uses zlib, компилятор ругается Error: Import library not found for libz. Как с этим совладать?
Распокавать GZIP файл
Модератор: Модераторы
А если пропустить zlib и использовать 7-zip? Копируем 7z.exe и 7z.dll куда-нибудь в подкаталоги программы, потом внимательно изучаем справку по командной строке 7-zip (в сети есть русские версии) и собираем простенький модулёк на основе TProcess: там есть возможность запускать приложение с параметрами, консольное окно в невидимом режиме и ожидание завершения запущенного приложения, тоесть - всё, что нам нужно.
Уже смотрел в сторону 7-zip - там насколько я понял нету возможности распаковать файл с одними только данными без заголовка. Но может я чегото недопонял?
В ZLIB есть функция низкого уровня inflate, насколько я понимаю если правильно её инициализировать, то можно чтото от этого получить. Но уж больно это сложно, может ктото возился с такой задачей, может у кого-то есть примерчик?
В ZLIB есть функция низкого уровня inflate, насколько я понимаю если правильно её инициализировать, то можно чтото от этого получить. Но уж больно это сложно, может ктото возился с такой задачей, может у кого-то есть примерчик?
Attid писал(а):думаю врятли.
может попробывать востановить заголовок ?
На текущий момент так и сделал. Но достоверно восстановить заголовок естественно не возможно, вернее не сам заголовок а CRC и размер исходного (не сжатого) файла в конце файла (последние 8 байт). Подставляю одинаковый заголовок ко всем сжатым кускам, пропускаю через zlib - zlib конечно же ругается, но всёже распаковывает. Впринципе работоспособно, но криво всё это.
Неужели и правда никто такого не делал?? В сети вроде пишут в php что-то сжимают gzip'ом и там никаких заголовков нету, но вот никаких примеров нету. Сейчас пытаюсь inflate из zlib прикрутить к этому делу, хочу подправить его под себя, прочитал RFC по методу кодирования.....чувствую изобретаю велосипед
- Deepthroat
- постоялец
- Сообщения: 144
- Зарегистрирован: 06.09.2007 00:21:34
- Откуда: Outer Heaven
- Контактная информация:
В PHP запросто. Вот здесь смотреть примеры: http://ru2.php.net/manual/en/zlib.examples.php.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
SpLab писал(а):Посмотрел по встроенным возможностям, вроде ZLIB может подойти для этих целей, но чтото при добовлении в uses zlib, компилятор ругается Error: Import library not found for libz. Как с этим совладать?
Был баг наподобие этого, и его исправляли, довольно давно. Какая версия FPC?
Откуда вообще берутся эти сжатые данные?
В дельфах такое может делать пару компонент - просто жать данные gzip-ом, в lazarus-е не знаю... Видимо надо копнуть по поводу Delphi - а потом найти альтернативу, название посмотрю на работе - если найду - отпишусь...
