xtool/contrib/fundamentals/ZLib/paszlib/dzlib.txt

102 lines
3.2 KiB
Plaintext

The Delphi 3 CD-ROM contains in \INFO\EXTRAS\ZLIB a zlib unit that implements
the TCompressionStream and TDecompressionStream classes. With some changes to
this unit you can implement the same functionality using Paszlib. I can not
publish the modified file (Copyright 1997 by Borland International), but this
document tells you how to make the changes by hand.
1. zlib.pas conflicts to a Paszlib unit name, change the name to dzlib.pas.
< unit dzlib;
---
> unit zlib;
2. Add zlib to the uses clause:
< uses zlib, Sysutils, Classes;
---
> uses Sysutils, Classes;
3. Change the type declarations for TAlloc, TFree and TZStreamRec to
< TAlloc = alloc_func;
< TFree = free_func;
< TZStreamRec = z_stream;
4. Remove the zlib_Version const.
> const
> zlib_Version = '1.0.4';
5. In the implementation part, add the following uses clause
< uses
< zutil, zDeflate, zInflate;
6. remove all Z_xxx const, {$L xxx} and all external procedures up to
(and including) the inflateReset() function and the _memset and _memcpy
procedure definitions.
7. for compatibility with D1 you should change the type of the "Size"
parameter of the zlibAllocMem() function from Integer to Cardinal
and all comments of the // form into the {} form.
8. Now, make the following changes, so that the dzlib can compile, you
can then use the modified unit dzlib in the test.pas source.
185c293
< CCheck(deflateInit_(@strm, Z_BEST_COMPRESSION, zlib_version, sizeof(strm)));
---
> CCheck(deflateInit_(strm, Z_BEST_COMPRESSION, zlib_version, sizeof(strm)));
192c300
< strm.next_out := pBytef(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
---
> strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
228c336
< DCheck(inflateInit_(@strm, zlib_version, sizeof(strm)));
---
> DCheck(inflateInit_(strm, zlib_version, sizeof(strm)));
235c343
< strm.next_out := pBytef(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
---
> strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
250c358
276c384
< FZRec.next_out := @FBuffer;
---
> FZRec.next_out := FBuffer;
278c386
< CCheck(deflateInit_(@FZRec, Levels[CompressionLevel], zlib_version, sizeof(FZRec)));
---
> CCheck(deflateInit_(FZRec, Levels[CompressionLevel], zlib_version, sizeof(FZRec)));
291c399
< FZRec.next_out := @FBuffer;
---
> FZRec.next_out := FBuffer;
318c426
< FZRec.next_out := @FBuffer;
---
> FZRec.next_out := FBuffer;
344c452
< FZRec.next_in := @FBuffer;
---
> FZRec.next_in := FBuffer;
351c459
< DCheck(inflateInit_(@FZRec, zlib_version, sizeof(FZRec)));
---
> DCheck(inflateInit_(FZRec, zlib_version, sizeof(FZRec)));
375c483
< FZRec.next_in := @FBuffer;
---
> FZRec.next_in := FBuffer;
397c505
< FZRec.next_in := @FBuffer;
---
> FZRec.next_in := FBuffer;
9. This is a bug fix:
in CompressBuf() change
< while CCheck(deflate(strm, Z_FINISH)) <> Z_STREAM_END do
to
> while deflate(strm, Z_FINISH) <> Z_STREAM_END do
in DeCompressBuf() change
< while CCheck(inflate(strm, Z_FINISH)) <> Z_STREAM_END do
to
> while inflate(strm, Z_FINISH) <> Z_STREAM_END do
Jacques Nomssi Nzali <nomssi@physik.tu-chemnitz.de> [25.3.2000]