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) Compress Large Binary File in BlocksCompresses a large binary file in blocks. This example uses BeginCompressBytes, MoreCompressBytes, and EndCompressBytes.
Use ChilkatAx-win32.pkg Procedure Test Handle hoFacSrc Handle hoFacDest Boolean iSuccess Integer iBlockSize Integer iNumBlocks Handle hoCompress Variant hoFileBytes Variant hoCompressedBytes Integer i String sTemp1 // This example assumes 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 large binary file for reading. Get ComOpenForRead Of hoFacSrc "qa_data/bmp/big.bmp" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoFacSrc To sTemp1 Showln sTemp1 Procedure_Return End // If we compress in 64K chunks, find out how many blocks there will be. Move 65536 To iBlockSize Get ComGetNumBlocks Of hoFacSrc iBlockSize To iNumBlocks // Open an output file for the compressed data. Get ComOpenForWrite Of hoFacDest "qa_data/bmp/compressedBmp.dat" 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 hoFileBytes If (i = 0) Begin Get ComBeginCompressBytes Of hoCompress vFileBytes To hoCompressedBytes End Else Begin Get ComMoreCompressBytes Of hoCompress vFileBytes To hoCompressedBytes End Get ComFileWrite Of hoFacDest vCompressedBytes To iSuccess Move (i + 1) To i Loop // At the very end, flush any remaining compressed bytes, if any. Get ComEndCompressBytes Of hoCompress To hoCompressedBytes Get ComFileWrite Of hoFacDest vCompressedBytes To iSuccess Send ComFileClose To hoFacSrc Send ComFileClose To hoFacDest Showln "Finished compressing file." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.