DataFlex
DataFlex
Create Zip in a BinData Object
See more Zip Examples
Recursively appends files in a directory tree and writes a zip archive into a Chilkat BinData object.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoZip
Boolean iRecurse
Variant vBdZip
Handle hoBdZip
String sZipAsBase64
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatZip)) To hoZip
If (Not(IsComObjectCreated(hoZip))) Begin
Send CreateComObject of hoZip
End
// Initialize the zip object. Because we will never actually write a zip file to the filesystem,
// the filepath passed to NewZip does not matter.
Get ComNewZip Of hoZip "x.zip" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Append a directory tree. The call to AppendFiles does
// not read the file contents or append them to the zip
// object in memory. It simply appends references
// to the files so that when WriteBd, WriteZip, or WriteZipAndClose
// is called, the referenced files are streamed and compressed
// into the .zip output file (or BinData object).
Move True To iRecurse
Get ComAppendFiles Of hoZip "c:/temp/a/*" iRecurse To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Write the zip archive into the bdZip object.
Get Create (RefClass(cComChilkatBinData)) To hoBdZip
If (Not(IsComObjectCreated(hoBdZip))) Begin
Send CreateComObject of hoBdZip
End
Get pvComObject of hoBdZip to vBdZip
Get ComWriteBd Of hoZip vBdZip To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// We could directly access the bytes of the zip archive, or perhaps
// get the zip bytes in base64 format.
Get ComGetEncoded Of hoBdZip "base64" To sZipAsBase64
Showln sZipAsBase64
// Or the zip can be used by some other Chilkat method call that accepts
// a BinData object as an argument.
End_Procedure