[delphizip]

  • From: "Roger Aelbrecht" <roger.aelbrecht@xxxxxxxxxx>
  • To: "delphizip @freelists.org" <delphizip@xxxxxxxxxxxxx>
  • Date: Thu, 14 Mar 2002 17:55:36 +0100

Hi Eric,

I downloaded the latest beta version dll sources from your website and
managed to get them build in BCB5
The dll's seem to be working now after some adaptation of the source files,
since I only have BCB5 to test with I tried to have all changes under a
Borland flag __BROLANDC__.
Sorry for the long post but I prefer to give all findings at once.
So far I only tested composition of an archive and retrieval of files all
seemed to be OK

Hope this helped,
Roger.
----------------------------------------------------------------------
Compiling zipddl
----------------
 1- the compiler complained about the function setftime to be re-defined, it
is already defined in "io.h" but with another signature; I renamed the
function to Setftime - capital s-
2- Linker Error  _TgbIndex defined in both ZipDll.c and Globals.c
 In Globals.c definition changed to ->    extern DWORD TgbIndex;
3- Warnings about structure change in Wizzip.h
Before typedef struct for callbackstruct added #pragma pack(1) to have it
byte aligned as requested in comments and after ZCL2 add pragma pack() to
set alignment to default again

Compiling Unzipddl
----------------
1- Error: could not find <sys/utime.h> inn doscfg.h and win32cfgf.h; For
BCB5 this file is in "Include" directory and not in sys. Added:
 #ifdef __BORLANDC__
    #include <utime.h>
 #else
    #include <sys/utime.h>
 #endif

Testing Zipddl
-------------------
1-Error can not find ZipDllExec in ZipDll.dll-> In wizzip.h export of
functions was put in comment
 Added:
 #ifdef __BORLANDC__
  extern __stdcall __declspec( dllexport ) long GetZipDllVersion( void );
  extern __stdcall __declspec( dllexport ) long
GetZipDllPrivVersion( void );
  extern __stdcall __declspec( dllexport ) long ZipDllExec( ZCL *C );
 #endif
 2- AV during execution of Add(). In Dllmain in function user_callback after
returning from user program. Reason In Wizzip.h we have typedef unsigned
long (*DLLCALLBK) (callbackstruct *);
That has to be a __stdcall for BCB
Solution added:
 #ifdef __BORLANDC__
   typedef unsigned long __stdcall (*DLLCALLBK) (callbackstruct *);
 #else
   typedef unsigned long (*DLLCALLBK) (callbackstruct *);
 #endif

Testing Unzipdll
-----------------------
1-Error can not find UnzDllExec in UnzDll.dll ->In WizUnzip.h export of
functions was put in comment
 Added:
 #ifdef __BOLANDC__
   extern __stdcall __declspec(dllexport) long GetUnzDllVersion( void );
   extern __stdcall __declspec(dllexport) long GetUnzDllPrivVersion( void );
   extern __stdcall __declspec(dllexport) long UnzDllExec( DCL1 *C );
 #endif
2- typedef of DLLCALLBK will give same problem as in zipdll.
 added:
 #ifdef __BORLANDC__
   typedef unsigned long __stdcall (*DLLCALLBK) (CallBackStruct *);
 #else
   typedef unsigned long (*DLLCALLBK) (callbackstruct *);
 #endif

Remarks for Unzipdll - found during browsing over files- not real errors
------------------------
1- All pragma's are put in comment in WizUnzip.h; Would this not result in
wrong alignment?
added :
 #pragma pack(1)     before start of typedef struct for DCL1
 #pragma pack()        at end of struct DCL2
#pragma pack(1)      before typedef struct for Callbackstruct
 and close with  #pragma pack()
2- fileGlobals.h
 all #ifdef USE_STRM_INPUT are put in comment, but in zipdll these
statements are still valid
 should both dll's not be build with same defines?
3-At the end of globals.h there are twe statements
 #ifndef USE_STRM_INPUT
 #define USE_STRM_INPUT
 #endif
 At least one of them is excesive
 For BCB I should prefer to have this statement surrounded such as
 #ifdef __BORLANDC__
  #ifndef USE_STRM_INPUT
  #define USE_STRM_INPUT
  #endif
 #endif
and have the definition of all defines in the project file *.bpr

--
Roger Aelbrecht
http://web.wanadoo.be/driehoeksw


Other related posts: