Hello,

I used to have a delphi program that relies on expanding files encoded 
in a gzip looking format with some methods that uses zlibex.
The files are w3g files, the replay format that warcraft III uses for 
storing the data of a given game, they are stored with zlib,

I am quoting the documentation of the w3g format I have here:
-----
offset | size/type | Description
-------+-----------+-----------------------------------------------------------
0x0000 |  1  word  | size n of compressed data block (excluding header)
0x0002 |  1  word  | size of decompressed data block (currently 8k)
0x0004 |  1 dword  | unknown (probably checksum)
0x0008 |  n bytes  | compressed data (decompress using zlib)

To decompress one block with zlib:
 1. call 'inflate_init'
 2. call 'inflate' with Z_SYNC_FLUSH for the block

The last block is padded with 0 bytes up to the 8K border. These bytes can
be disregarded.
-----


The code sample I am using under Delphi can be seen there 
http://pastebin.com/m51e7b030
(that used to work under delphi 6 with zlibex) :

One w3g file is available here 
http://esby.free.fr/prog/dW3gParser/other/test.w3g
( The header_size is equal to 68 for this file )


I used to rely on the TZDecompressionStream class provided by zlibex.

I tried to use the TDecompressionStream provided by ZStream, but it 
seems to be failing here,
as I am getting a decompression error when trying to decode the data.

I shortly tried to use a few alternatives, but I could not find anything 
that would work here.

What would be the alternatives or possibility I could use to sucessfully 
do what I used to perform under Delphi without problem?

esby / Yves Tennevin
_______________________________________________
Lazarus mailing list
[email protected]
http://www.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to