Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> data error при декомпрессии gzip 
V
    Опции темы
MadMas
  Дата 5.8.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



Добрый день. 

Пишу консольное приложение распаковки архива gzip. Почему-то возникает ошибка "data error". Подскажите, пожалуйста, где косяк? 

Код

program LRC;

{$APPTYPE CONSOLE}

uses
  SysUtils,  ZLibEx, Classes;

var
dest: TFileStream;
z: TZDecompressionStream;
bytesread: integer;
mainbuffer:array[0..1023] of char;
const buffer_size=1024;

begin
z := TZDecompressionStream.Create(TFileStream.Create('C:\traf.log.gz',
fmOpenRead), 12 + 32);
dest:=TFileStream.Create('C:\o_O.txt', fmCreate);
  try
repeat
bytesRead := z.Read(mainbuffer, buffer_size);
dest.WriteBuffer(mainbuffer, buffer_size);
WriteLn (String(mainbuffer));
until bytesread < 1024;
  except
  z.Free();
  dest.free();
  exit;
  end;

z.Free();
dest.free();
WriteLn('Done.');
ReadLn;

end.

PM   Вверх
Alexeis
Дата 5.8.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

dest.WriteBuffer(mainbuffer[0], buffer_size);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MadMas
Дата 5.8.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



Alexeis, все равно вылетает с ошибкой data error
PM   Вверх
aleksh
Дата 5.8.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



может ошибка возникает когда при последнем WriteLn (String(mainbuffer)) в конце буфера недпустимые символы оказываются?
а если ввести проверку на коректность данных в mainbuffer перед выводом?
PM MAIL   Вверх
Alexeis
Дата 5.8.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



MadMas, на какой строчке вылетает?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MadMas
Дата 5.8.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



aleksh, ошибка возникает стабильно на пятом цикле. 
На строчке 
Код

bytesRead := z.Read(mainbuffer, buffer_size);


Уходит сюда: 
Код

function ZDecompressCheck(code: Integer): Integer;
begin
  Result := code;

  if code < 0 then
  begin
    raise EZDecompressionError.Create(code);
  end;
end;

PM   Вверх
aleksh
Дата 5.8.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



стабильно -- независемо от размера C:\traf.log.gz?
PM MAIL   Вверх
Alexeis
Дата 5.8.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Че могу сказать. Компонент самописанный, можно попробовать вычислять оставшийся размер и не просить больше в Read. Возможно тут чего-то не предусмотрели.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MadMas
Дата 5.8.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



Да. Проверяла на архивах размерами 64Мб и 13 Кб.
PM   Вверх
aleksh
Дата 5.8.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



что пишет в окне с ошибкой, случаем не что-то из
    'file error',                    // Z_ERRNO          (-1)
    'stream error',             // Z_STREAM_ERROR   (-2)
    'data error',                 // Z_DATA_ERROR     (-3)
    'insufficient memory',   // Z_MEM_ERROR      (-4)
    'buffer error',               // Z_BUF_ERROR      (-5)
    'incompatible version', // Z_VERSION_ERROR  (-6)
если да, то что именно
PM MAIL   Вверх
MadMas
Дата 5.8.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



aleksh,     'data error',                 // Z_DATA_ERROR     (-3)
PM   Вверх
Alexeis
Дата 5.8.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Еще могу посоветовать посмотреть содержимое mainbuffer на первых циклах. Нормальные достаются данные или мусор.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MadMas
Дата 5.8.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



Alexeis, данные нормальные, декодируются правильно. 
PM   Вверх
Alexeis
Дата 5.8.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Стандартные архиваторы правильно распаковывают?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MadMas
Дата 5.8.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Блондинко
*


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

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



Цитата(Alexeis @ 5.8.2008,  12:06)
Стандартные архиваторы правильно распаковывают?

Что подразумевается под стандартными архиваторами?
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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