Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как извлечь GZIP файлы


D7pro ©   (2006-03-09 18:03:00) 

Пытаюсь разархивировать файлы в формате GZIP. Перепробовал разные компоненты, такие как filetools 2.0, TurboPower Abbrevia v3.04, ZipTV.7.0.6. Проблемма в том что они извлекают архив не полностью. Если архив распаковать winrar-ом, то получаю 11 кб, с помошью моей проги 276 байт. На всех трех компонентах разультат один и тотже. Может кто сталкивался с такой проблемой подскажите !!!


D7pro   (2006-03-14 11:01:00) [1]

Ты имеешь ввиду консольный RAR  ??? Была такая мысль, но по моему это не красиво. Все равно спасибо за помощь !!!


Slym   (2006-03-14 06:53:00) [2]

INDY пользует ZLibEx может он чемнибудь отличается от обычного ZLib... тебе всего нужно переделать DecompressGZipStream под ZLib.TDecompressionStream
И вообще - Тебя RAR не устроит?


D7pro   (2006-03-13 12:04:00) [3]

Сделал так.

procedure TForm1.Button1Click(Sender: TObject);
var
s1: TFileStream;
s2: TMemoryStream;
Decompressor:TIdCompressorZLibEx;

begin
s1:=TFileStream.Create('C:\download\Aug-2005.gz',fmOpenReadWrite);
s2:=TMemoryStream.Create;
Decompressor:=TIdCompressorZLibEx.Create;
Decompressor.DecompressGZipStream(s1,s2);
s2.SaveToFile('C:\download\1.txt');
end;

В результате файл 1.txt пустой, а архив Aug-2005.gz становится битый. Может DecompressGZipStream распаковывает mod_gzip. Мне нужно распаковать лог файлы с сервака. Неужели никто не сталкивался с этой проблемой ???
Кстати когда заменяю fmOpenReadWrite на fmOpenRead то возникает ошибка 'Stream Write Error', зачем он пишет в архивный файл ???


Slym   (2006-03-13 07:36:00) [4]

IdZLibCompressorBase.pas - абстрактная реализация
реально реализовано в - IdCompressorZLibEx.pas TIdCompressorZLibEx


Palladin   (2006-03-11 12:13:00) [5]

const s2: TStream=nil;


Это что еще такое?


D7pro   (2006-03-10 16:34:00) [6]

Slym. Подскажи пожалуйста еще одну вещь. Как правильно передать параметры этой процедуре. Делаю так.

procedure TForm1.Button1Click(Sender: TObject);
var
s1: TFileStream;
Decompressor:TIdZLibCompressorBase;
const s2: TStream=nil;

begin
s1:=TFileStream.Create('C:\download\Aug-2005.gz',fmOpenReadWrite);
Decompressor:=TIdZLibCompressorBase.Create;
Decompressor.DecompressGZipStream(s1,s2);
end;

На последней строке вылетает ошибка 'Abstract error'.  Что делать ???


D7pro   (2006-03-10 15:58:00) [7]

Спасибо сейчас попробую.


Slym   (2006-03-10 14:22:00) [8]

INDY10 IdZLibCompressorBase.pas
procedure TIdZLibCompressorBase.DecompressGZipStream(AStream : TStream; const AOutStream : .........


D7pro   (2006-03-09 18:30:00) [9]

Для delphi 7 я нашел только два компонента ZipTV.7.0.6 и filetools 2.0 и они не правльно работают, во всяком случае нужные мне файлы распаковывают не до конца. А как называется тот компонент ???


Fay   (2006-03-09 18:08:00) [10]

На torry.net есть компонент для gzip. Галюнов пока не замечено.


Наверх

Титульная страница Поиск, карта сайта Написать письмо