file zipobj.pas
zip compression object
=====================================================================
flg dd-mmm-yy who : description -------------------------------------
01 24-jun-91 prp : initial creation.
end-of-change-log
=====================================================================
verbose description}
code used here was originally from:
Shrink.Pas version 1.2 (C) Copyright 1989 by R. P. Byrne
Compress using Lempel-Ziv-Welch (LZW) compression techniques
("shrink").
Modified greatly by PRP
There are two main ways to use this object:
1-to zip a set of files call:
init();
openoutfile();
buildfilelist();
repeat until not zipnext;
closeoutfile();
done();
2-to add files to a zip until it reaches a desired size:
init();
openoutfile();
repeat
addtozip()
until currentsize > max_desired;
removelast;
closeoutfile();
done();
Hooks for displaying progress are provided.
The code from Shrink.pas was turned into a object and made function
but the following flaws exist:
1 - There was no attempt made to optimize the code.
2 - The inline code was not touched and thus needed kludges to get
it to work. See zptr and PutCharMeth below. Several variables
referenced by the inline code had to stay global. Also for some
reason this unit doesn't work if overlayed!
3 - For some reason this hangs on large files (and so does Shrink.pas).
Should any kind person have the time to correct these flaws I would sure
like to hear about it.
Paul Peterson (602)-778-2762, Summit Software Developers, 72371,1136
|