DEFINE CLASS myclass AS session OLEPUBLIC IMPLEMENTS _IArchiveEvents IN "C:\SAWZIPNG\SAWZIPNG.DLL" PROCEDURE _IArchiveEvents_OnAdd(filename AS STRING, soFar AS Number, ToDo AS Number, Cancel AS LOGICAL @) AS VOID; HELPSTRING "Fired when a file is added to the archive" * add user code here ENDPROC PROCEDURE _IArchiveEvents_OnExtract(filename AS STRING, soFar AS Number, ToDo AS Number, Cancel AS LOGICAL @) AS VOID; HELPSTRING "Fired when a file is extracted" * add user code here ENDPROC PROCEDURE _IArchiveEvents_OnDelete(filename AS STRING, soFar AS Number, ToDo AS Number, Cancel AS LOGICAL @) AS VOID; HELPSTRING "Fired when a file is deleted" * add user code here ENDPROC PROCEDURE _IArchiveEvents_OnStore(filename AS STRING, soFar AS Number, ToDo AS Number, Cancel AS LOGICAL @) AS VOID; HELPSTRING "Fired when a file is stored" * add user code here ENDPROC PROCEDURE _IArchiveEvents_OnDiskNeeded(disk AS Number, Cancel AS LOGICAL @) AS VOID; HELPSTRING "Fired when a disk is needed" * add user code here ENDPROC ENDDEFINE>Freeware Sawzip now allows disk spanning (SawzipNG)
>LOCAL cZipfile, cBackupPath,cRestorePath, cMask >cZipfile = "a:\"+ SUBSTR(SYS(2015), 4) + ".zip" > >cMask = "*.*" >cBackupPath = GETDIR("C:\","Select directory to backup","BACKUP DIRECTORY?",64) >cRestorePath = GETDIR("C:\","Select where to restore","RESTORE DIRECTORY?",64) >IF !DIRECTORY(cBackupPath) OR !DIRECTORY(cRestorePath) > MESSAGEBOX("Both a backup directory and a restore directory must be selected",16,"Missing directory") > RETURN >ENDIF > > >WAIT WINDOW "BACKING UP FILES ... ONE MOMENT PLEASE" NOWAIT >oSAWArchive = CREATEOBJECT("SAWZipNG.Archive") >oSAWArchive.Create(cZipfile,1) && 1 allows disk spanning >Local lcPath, cZippedFile, nProgressValue, nProgressMax >cZippedFile = Sys( 2000,cBackupPath+cMask) >nProgressMax=ADIR(aryFiles,cBackupPath+cMask) >RELEASE aryFiles >nProgressValue= 1 >oSAWArchive.TempPath=sys(2023) && Temp directory for spanning >Do While !Empty( cZippedFile ) > LcSAWFile = cBackupPath+cZippedFile > nProgressComplete = INT(nProgressValue/nProgressMax*100) > sMessage = "BACKING UP: " + TRANSFORM(nProgressComplete)+"% " + Replicate("|",INT(nProgressComplete/2)) > set message to sMessage && display progress in taskbar > oSAWArchive.Addfile(lcSAWFile) > LcSawFile = "" > cZippedFile = Sys( 2000,cBackupPath+cMask,1) > nProgressValue = nProgressValue + 1 >Enddo >oSAWArchive.close >oSAWArchive = .NULL. > > >WAIT CLEAR >MESSAGEBOX("Backup Completed") >set message to > >RETURN