Поиск:

Ответ в темуСоздание новой темы Создание опроса
> архивы gzip, архивы gzip  
:(
    Опции темы
Хал
Дата 8.5.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2008

Репутация: нет
Всего: нет



Всем доброго дня!

Подскажите, пожалуйста, как из C++ Builder 2006 распаковать gzip-архив (файл .gz)!
Компоненты ZipForge? VCLUnZip и TZipBuilder его не берут.
С помощью ZipTV TUnGZip получилось, но он платный ))

Может есть какие-то бесплатные компоненты?
Да, забыл сказать, работаю в WinXP
PM MAIL   Вверх
xvr
Дата 8.5.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Хал @ 8.5.2008,  08:02)
Всем доброго дня!

Подскажите, пожалуйста, как из C++ Builder 2006 распаковать gzip-архив (файл .gz)!
Компоненты ZipForge? VCLUnZip и TZipBuilder его не берут.
С помощью ZipTV TUnGZip получилось, но он платный ))

Может есть какие-то бесплатные компоненты?
Да, забыл сказать, работаю в WinXP

Бери библиотеку zlib (www.zlib.org), она поддерживает (IMHO все перечисленные компоненты используют именно ее)
PM MAIL   Вверх
Хал
Дата 12.5.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2008

Репутация: нет
Всего: нет



Подключил zlib и юзаю gzread. Получился такой вариант:

const int KILOB = 1024;
  char cb[KILOB];
  AnsiString arch = "C:\\111.xml.gz";
  FILE* outfile = fopen("C:\\newfile.xml", "wb");
   gzFile gfile = gzopen (arch.c_str(), "rb");
  int len = 0;
  do
  {
    len =  gzread (gfile, cb, KILOB);
    if(len < KILOB)  cb[len]=0;    
    fprintf(outfile, "%s" , cb);
  } while(len == KILOB);
  fclose(outfile);
  gzclose(gfile);

Напомню, задача просто вытащить файл из .gz архива. Может можно проще, не слишком коряво?  smile Знатоки zlib, подскажите!
PM MAIL   Вверх
ksili
Дата 12.5.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



А почему блоками распаковываете? Сразу целиком не получилось?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Хал
Дата 12.5.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2008

Репутация: нет
Всего: нет



Добавлено @ 13:28
Не понял вопроса...
это как - целиком? в данном случае?

Это сообщение отредактировал(а) Хал - 12.5.2008, 13:29
PM MAIL   Вверх
xvr
Дата 12.5.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Хал @ 12.5.2008,  12:29)
Подключил zlib и юзаю gzread. Получился такой вариант:

const int KILOB = 1024;
  char cb[KILOB];
  AnsiString arch = "C:\\111.xml.gz";
  FILE* outfile = fopen("C:\\newfile.xml", "wb");
   gzFile gfile = gzopen (arch.c_str(), "rb");
  int len = 0;
  do
  {
    len =  gzread (gfile, cb, KILOB);
    if(len < KILOB)  cb[len]=0;    
    fprintf(outfile, "%s" , cb);
  } while(len == KILOB);
  fclose(outfile);
  gzclose(gfile);

Напомню, задача просто вытащить файл из .gz архива. Может можно проще, не слишком коряво?  smile Знатоки zlib, подскажите!

Почти нормально, рекомендую заменить
Цитата

    if(len < KILOB)  cb[len]=0;    
    fprintf(outfile, "%s" , cb);

на
Код

   if (len>0) fwrite(cb,1,len,outfile);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.