Home Forums ActiveX components Xceed Zip for ActiveX & x64 Is it possible to get the 64 bit size values of files contained in a zip file without using the event mechanism ?

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • User (Old forums)
    Member
    Post count: 23064
    #42452 |

    Environment: Windows XP, Windows 7, Windows 2008 (32/64bit)

    DLL Version: XceedZipX64.dll, 6.5.10316.0

     I am currently listing files from a zip file using the lpfnXzGetZipContents(m_hZip, &hItems) method and iterating through each item with lpfnXziGetFirstItemW().   However the property  “lSizeHigh” for this object does not show the high order bits as I had hoped for.

     So my question is, can I get the true 64 bit value of files greater than 4Gb without using the event mechanism (ListZipContents) with callbacks ?  I know I can get the summary information which has a 64 bit value for total size of the contained files in a zip file using GetZipFileInformation(), but I would like this information for each contained file.

     Any guidance would be much appreciated. 

     

    After further analysis, the zip file I was using for testing was corrupt in such a way that Windows reported it as having an uncompressed size of 6,000 Terabytes.  In actual fact, 2 different libraries, Xceed being one of them, report it as having an uncompressed size of 5.6Gbytes. So, the above routines do report the 64 bit value correctly (after testing on non-corrupt zips!). 

     

    Imported from legacy forums. Posted by Paul (had 863 views)

    Xceed Support
    Member
    Post count: 5658

    Hi Paul, 

    This was the feedback from the lead developer of the component:

     

    I wasn’t able to reproduce the issue on my end. The high-order bits showed up as expected in ‘lSizeHigh’ for me.

    Did you properly initialize the xcdListingFileParams structure you supplied to XziGetFirstItemW()?

    Example:

    xcdListingFileParams item;

    // Important
    item.wStructSize = sizeof( xcdListingFileParams );

    BOOL haveItem = XziGetFirstItemW( zipItems, &item );
    while( haveItem )
    {
      wprintf( L”File: %s. SizeHigh: %ld. SizeLow: %ld\n”, item.szFilename, item.lSizeHigh, item.lSize );

      haveItem = XziGetNextItemW( zipItems, &item );

    } 

    Imported from legacy forums. Posted by Michel [Xceed] (had 1207 views)

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.