crossplatform.ru

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


  Ответ в qUncompress
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 14.5.2010, 13:45
  zlib вместе с Qt поставляется.
Спасибо огромное, буду разбираться.
ViGOur Дата 14.5.2010, 13:00
  Смотри аттач, там в принципе для студии пример, но адаптировать можно под что угодно.
Единственное тебе понадобится сама zlib...
ViGOur Дата 13.5.2010, 19:24
  Если мне не изменяет память, то в zlib можно без проблем подсунуть буфер для упаковки или распаковки...
Я реализовывал сжатие с помощью zlib HTTP потока для самописного HTTP сервера. И проблем или сложностей помнится не было, завтра гляну, кажется я и распаковку реализовывал...

Завтра если не буду долго отвечать, напомни мне в приват об этом...
igor_bogomolov Дата 13.5.2010, 18:48
  Кто использовал 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, но без предварительной записи архива в файл.

Спасибо.

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 21:47