Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Decompress Large Binary File in BlocksDecompresses a large binary file in blocks. This example uses BeginDecompressBytes, MoreDecompressBytes, and EndDecompressBytes.
Use ChilkatAx-win32.pkg Procedure Test Handle hoFacSrc Handle hoFacDest Boolean iSuccess Integer iBlockSize Integer iNumBlocks Handle hoCompress Variant hoDecompressedBytes Variant hoCompressedBytes Integer i String sTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComCkFileAccess)) To hoFacSrc If (Not(IsComObjectCreated(hoFacSrc))) Begin Send CreateComObject of hoFacSrc End Get Create (RefClass(cComCkFileAccess)) To hoFacDest If (Not(IsComObjectCreated(hoFacDest))) Begin Send CreateComObject of hoFacDest End // Open a previously compressed file for decompressing. // See Compress Large File in Blocks Get ComOpenForRead Of hoFacSrc "qa_data/bmp/compressedBmp.dat" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoFacSrc To sTemp1 Showln sTemp1 Procedure_Return End // If we compress in 32K chunks, find out how many blocks there will be. Move 32768 To iBlockSize Get ComGetNumBlocks Of hoFacSrc iBlockSize To iNumBlocks // Open an output file for the decompressed data. Get ComOpenForWrite Of hoFacDest "qa_output/decompressed.bmp" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoFacDest To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatCompression)) To hoCompress If (Not(IsComObjectCreated(hoCompress))) Begin Send CreateComObject of hoCompress End Set ComAlgorithm Of hoCompress To "deflate" Move 0 To i While (i < iNumBlocks) Get ComReadBlock Of hoFacSrc i iBlockSize To hoCompressedBytes If (i = 0) Begin Get ComBeginDecompressBytes Of hoCompress vCompressedBytes To hoDecompressedBytes End Else Begin Get ComMoreDecompressBytes Of hoCompress vCompressedBytes To hoDecompressedBytes End Get ComFileWrite Of hoFacDest vDecompressedBytes To iSuccess Move (i + 1) To i Loop // At the very end, flush any remaining decompressed bytes, if any. Get ComEndDecompressBytes Of hoCompress To hoDecompressedBytes Get ComFileWrite Of hoFacDest vDecompressedBytes To iSuccess Send ComFileClose To hoFacSrc Send ComFileClose To hoFacDest Showln "Finished decompressing file." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.