crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> qUncompress
igor_bogomolov
  опции профиля:
сообщение 13.5.2010, 18:48
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Кто использовал QByteArray qUncompress ( const QByteArray & data ) для извлечения данных из архива упакованного при помощи zlib?
Поделитесь примером, никак не получается извлечь данные (про первые 4 байта знаю)

Сейчас у меня есть готовая функция для получения данных не использующая qUncompress
Раскрывающийся текст
QString LogViewPlugin::getFromGzFile(const QString & gzfname)
{
    const char *fname = gzfname.toAscii();
    gzFile in;
    QString out;
    in = gzopen(fname, "rb");
    if (in == NULL) {
        LOG_ERR(pextLog, tr("GZ ERROR: Can't open gz file."));
        return QString();
    }

    char buf[1024];
    memset ( buf, 0, 1024 );
    int len;
    int err;
    forever {
        len = gzread(in, buf, sizeof(buf)-1);
        if (len < 0) {
            LOG_ERR(pextLog, tr("GZ ERROR: %1").arg(QLatin1String(gzerror(in, &err))));
            break;
        }

        if (len == 0) {
            out.append(QLatin1String(buf));
            memset ( buf, 0, 1024 );
            break;
        }

        out.append(QLatin1String(buf));
        memset ( buf, 0, 1024 );
    }

    if (gzclose(in) != Z_OK) {
        LOG_ERR(pextLog, tr("GZ ERROR: Failed gz file close"));
    }

    return out;
}

Меня эта функция не устраивает. Дело в том, что архив я получаю по сети от сервера (это архив журнала сообщений). И мне просто нужно отобразить его на экране. Т.е. сбрасывать его сначала в файл нет никакой необходимости.

Поделитесь примерчиком как извлечь данные при помощи qUncompress. Или при помощи zlib, но без предварительной записи архива в файл.

Спасибо.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 13.5.2010, 19:24
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Если мне не изменяет память, то в zlib можно без проблем подсунуть буфер для упаковки или распаковки...
Я реализовывал сжатие с помощью zlib HTTP потока для самописного HTTP сервера. И проблем или сложностей помнится не было, завтра гляну, кажется я и распаковку реализовывал...

Завтра если не буду долго отвечать, напомни мне в приват об этом...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.5.2010, 13:00
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Смотри аттач, там в принципе для студии пример, но адаптировать можно под что угодно.
Единственное тебе понадобится сама zlib...
Прикрепленные файлы
Прикрепленный файл  Compress.zip ( 16.17 килобайт ) Кол-во скачиваний: 212
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 14.5.2010, 13:45
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


zlib вместе с Qt поставляется.
Спасибо огромное, буду разбираться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 18:18