Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

Формат 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.06 c
14-1119877554
Axis_of_Evil
2005-06-27 17:05
2005.07.18
Outsourcing


3-1117916546
новичок из сыктывкара
2005-06-05 00:22
2005.07.18
фильтрация данных


3-1117706174
Ega23
2005-06-02 13:56
2005.07.18
Invalid BLOB handle in record buffer


14-1119429983
timotei
2005-06-22 12:46
2005.07.18
Memory Spy


1-1120394853
Unknow
2005-07-03 16:47
2005.07.18
Как вписать данные в ListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский