Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

Формат GZip где я не прав?   Найти похожие ветки 

 
Slym ©   (2005-04-13 10:21) [0]

1 При распаковке (RAR) жалуется на неверный CRC, но исправно распаковывает!!!
2 IExplorer не читает этот файл если при Accept-Encoding: gzip
но Reget его исправно выкачивает (также в gzip)(ему наверно чихать на CRC)
CRC32 исходно файла расчитывается правильно, может я не туда ложу его в архиве?
по стандарту:
заголовок 10байт (я использую только основной заголовок) ->
поток deflate->
crc32 4байта ->размер распакованный 4байта.

сравнивал два архива одного файла зажатый моим модулем и сжатый GZipом... конец (8 байт) одинаковый. GZip распаковывает нормально, на мой жалуется на CRC (RAR)
мой модуль:
unit GZip;

interface
uses classes,zlib,crc32;

procedure CompressStream(Source,Dest:TStream);
procedure CompressStreamInplace(Source:TStream);

implementation
type
 TGZipHeader=packed record
   ID1:byte;
   ID2:byte;
   CM:byte;
   FLG:byte;
   MTIME:integer;
   XFL:byte;
   OS:byte;
 end;
 TGZipEnd=packed record
   Crc32:integer;
   Size:integer;
 end;
const DefGZipHeader:TGZipHeader=(ID1:31;ID2:139;CM:8;FLG:0;MTIME:0;XFL:2;OS:255);

procedure CompressStream(Source,Dest:TStream);
var
 MemoryStream:TMemoryStream;
 CompressionStream:TCompressionStream;
 GZipEnd:TGZipEnd;
begin
 GZipEnd.Crc32:=Crc32Stream(Source,0);
 GZipEnd.Size:=Source.Size;
 Dest.WriteBuffer(DefGZipHeader,SizeOf(DefGZipHeader));
 MemoryStream:=TMemoryStream.Create;
 try
   CompressionStream:=TCompressionStream.Create(clMax,MemoryStream);
   try
     CompressionStream.CopyFrom(Source,0);
   finally
     CompressionStream.Free;
   end;
   MemoryStream.Seek(2,soBeginning);//Skip first 2 bytes!
   Dest.CopyFrom(MemoryStream,MemoryStream.Size-2);
 finally
   MemoryStream.Free;
 end;
 Dest.WriteBuffer(GZipEnd,SizeOf(GZipEnd));
end;

procedure CompressStreamInplace(Source:TStream);
var Dest:TMemoryStream;
begin
 Dest:=TMemoryStream.Create;
 try
   CompressStream(Source,Dest);
   Source.Size:=0;
   Source.CopyFrom(Dest,0);
 finally
   Dest.Free;
 end;
end;

end.


 
Slym ©   (2005-04-15 04:52) [1]

Хм... Третьи сутки пошли... Такой простой формат GZip, а помочь никто не хочет... Весь rfc1952 прочитал (может у меня с аглицким плохо), все по нему: не работает!


 
Slym ©   (2005-04-15 04:55) [2]

Что я делаю:
Серверок на IDHttpServer (Indy10)... с возможностью сжимать контент:
Deflate сжатие работает!, но GZip более широко поддерживается (опираюсь на возможности имеющегося совта) и нужен именно GZip!



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.049 c
3-1117716092
andrey__
2005-06-02 16:41
2005.07.18
Компонент TADODataSet добавление пользовательского поля


1-1119508806
Grief
2005-06-23 10:40
2005.07.18
иконка у dll


1-1120137772
and
2005-06-30 17:22
2005.07.18
Трассировка только своих модулей


3-1118163412
Julia
2005-06-07 20:56
2005.07.18
Печать отчетов


14-1119725269
lookin
2005-06-25 22:47
2005.07.18
Восстановить контакт в ICQ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский