*************************************
FUNCTION COPIASZIP(cMultiples)
*************************************
LOCAL oFont
LOCAL oDlg
LOCAL oBrowseZip
Local cModulo:=GetModuleFilename(GetInstance())
Local cDir:=SUBSTR(ALLTRIM(cModulo),1,LEN(ALLTRIM(cModulo))-11)
Local oBitmap
Local oCursorMano
Local cNombreFi
//
Local cAnyo:=STR(YEAR(DATE()),4)
Local cMes :=ALLTRIM(STR(MONTH(DATE()),2))
Local cDia :=ALLTRIM(STR(DAY(DATE()),2))
Local cCoNombre:=ALLTRIM(Decrypt(FRECU2->CONOMBRE,"6"))
//
IF VAL(SUBSTR(cMultiples,1,2)) > 0
cDir:= cDir+"COMU"+SUBSTR(cMultiples,1,2)+"\"
ENDIF
//
/*variables de seccion zip*/
PRIVATE oFolderSourceZip, cFolderSourceZip
PRIVATE oGetFolderSourceZip
PRIVATE oIncludeSubFolder, lIncludeSubFolder
PRIVATE oZipToFloppy, lZipToFloppy
PRIVATE oFolderTargetZip, cFolderTargetZip
PRIVATE oGetFolderTargetZip
PRIVATE oFilesCountZip, nTotalFilesToZip
PRIVATE nSizeFilesToZip
PRIVATE oDoCompress
PRIVATE acFilesToZip := { { "", 0, CToD( "" ), "" } }
PRIVATE cDestino:=ALLTRIM(FRECU2->RutaZip)
//
IF LEN(cMes) = 1
cMes="0"+cMes
ENDIF
IF LEN(cDia) = 1
cDia="0"+cDia
ENDIF
//
cNombreFi:=cAnyo+cMes+cDia+".ZIP"
//
//RENAME "FRECU.DBF" TO "FRECU.DDD"
DbCloseAll()
//
FRename(cDir+"FRECU.DBF", cDir+"FRECU.DDD")
/*
IF VAL(SUBSTR(cMultiples,1,2)) > 0
FRename(cDir+"FRECU.DBF", "FRECU.DDD")
ELSE
FRename("FRECU.DBF", "FRECU.DDD")
ENDIF
//
*/
/*valores inciaiales de seccion zip*/
cFolderSourceZip := ""
cFolderTargetZip := cFilePath(cDestino)+"AGUAGES-"+cCoNombre+"-"+cNombreFi
lIncludeSubFolder := FALSE
lZipToFloppy := FALSE
nTotalFilesToZip := 0
nSizeFilesToZip := 0
/*definiciones de objetos icon y font*/
DEFINE CURSOR oCursorMano RESOURCE "Hand"
DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-10
/*definicion de dialogo*/
DEFINE DIALOG oDlg NAME "COPIASZIP" TITLE "Realizar copias de seguridad comprimidas" FONT oFont
oDlg:lHelpIcon:=.F.
/*redefinicion de controles de pagina #1*/
REDEFINE GET oFolderSourceZip ;
VAR cFolderSourceZip ;
ID 101 OF oDlg ;
WHEN FALSE COLOR CLR_BLACK, CLR_MENTA2
REDEFINE BTNBMP oBitmap RESOURCE "CANDADO" ID 102 OF oDlg;
ACTION oDlg:End() NOBORDER
REDEFINE LISTBOX oBrowseZip FIELDS "" ;
HEADERS "Nombre", "Tamaño", "Fecha", "Ruta" ;
SIZES 100, 80, 80, 80, 150 ;
ID 104 OF oDlg
oBrowseZip:SetArray( acFilesToZip )
oBrowseZip:bLine = { || { acFilesToZip[ oBrowseZip:nAt ][ 1 ],;
cValToChar( acFilesToZip[ oBrowseZip:nAt ][ 2 ] ),;
cValToChar( acFilesToZip[ oBrowseZip:nAt ][ 3 ] ),;
cValToChar( acFilesToZip[ oBrowseZip:nAt ][ 4 ] ) } }
GetFilesToZip( cDir, oBrowseZip )
cFolderSourceZip = cDir+"*.DB*"
REDEFINE GET oFolderTargetZip ;
VAR cFolderTargetZip ;
ID 106 OF oDlg ;
COLOR rgb(0,0,0),rgb(255,200,100) READONLY //WHEN FALSE COLOR CLR_BLACK, CLR_MENTA2
REDEFINE BUTTON oGetFolderTargetZip ;
ID 107 OF oDlg ;
ACTION SetFileZip()
oGetFolderTargetZip:cToolTip := " Seleccionar ruta de copiado y nombre de fichero "
oFilesCountZip := TProgress() :Redefine( 108, oDlg )
REDEFINE BUTTONBMP oDoCompress ID 109 OF oDlg;
ACTION DoMakeZip( oBrowseZip );
BITMAP "ACEPTAR" PROMPT " Respaldar" TEXTRIGHT
oDoCompress:cToolTip := "Generar fichero ZIP y copiarlo en la ruta indicada"
REDEFINE BUTTONBMP oClose ID 103 OF oDlg;
ACTION oDlg:END();
BITMAP "SALIR" PROMPT " Salir" TEXTRIGHT
oClose:cToolTip := " Salir "
oDoCompress:oCursor:=oCursorMano
oClose:oCursor:=oCursorMano
oGetFolderTargetZip:oCursor:=oCursorMano
/*activacion de dialogo*/
ACTIVATE DIALOG oDlg CENTER
FRename(cDir+"FRECU.DDD", cDir+"FRECU.DBF")
/*
IF VAL(SUBSTR(cMultiples,1,2)) > 0
FRename(cDir+"FRECU.DDD", "FRECU.DBF")
ELSE
FRename("FRECU.DDD", "FRECU.DBF")
ENDIF
//
*/
AbreFi()
//
IF FRECU2->(!RecLock(5))
TONE(400,2)
TONE(200,2)
MsgInfo("No es posible la modificaci¢n;int‚ntelo m s tarde, por favor.")
ELSE
FRECU2->Rutazip = ALLTRIM(cDestino)
//
FRECU2->(DbRunLock())
FRECU2->(DbCommit())
ENDIF
//
/*eilminacion de font usadas*/
oFont:END()
RETURN NIL /*Fin*/
/*--------------------------------------------------------------------------*/
PROCEDURE GetDirToZip( oBrowseZip )
LOCAL cDir := ""
/*solicita directorio origen de ficheros a respaldas*/
cDir := cGetDir( "Directorio de ficheros a respaldar" )
/*si se selecciono un directorio*/
IF ! Empty( cDir )
/*obtiene los ficheros a respaldar*/
GetFilesToZip( cDir, oBrowseZip )
/*actualiza nombre de directorio fuente*/
cFolderSourceZip := cDir
oFolderSourceZip:refresh()
ENDIF
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE GetFilesToZip( cDir, oBrowseZip )
LOCAL aFile
LOCAL nFiles
LOCAL aFiles := { }
/*verifica si se paso el nombre de directorio fuente*/
IF Empty( cDir )
RETURN
ENDIF
/*verifica si se procesaran los subdirectorios, y se obtiene un arreglo on los ficheros a respaldar*/
CursorWait()
/*macara de archivos a recuperar*/
cDir += "\*.db*"
/*si no se incluyen directorios*/
IF ! lIncludeSubFolder
/*Parameter of directory( <cMask>, <cFlags>, <lEightDotThree>, <lIncludePathInFiles> )*/
aFiles := Directory( cDir,,, XBL_FILEWITHPATH )
ELSE
/*Parameter of directoryrecurse( <cMask>, <cFlags>, <lEightDotThree>, <lIncludePathInFiles> )*/
aFiles := directoryrecurse( cDir,,, XBL_FILEWITHPATH )
ENDIF
CursorArrow()
/*si se obtivo algun fichero a respaldar*/
nFiles := Len( aFiles )
IF nFiles > 0
/*asigna el numero de ficheros a respaldar a la var del control meter*/
nTotalFilesToZip := nFiles
nFilesZipped := 0
/*inicializa arreglo de ficheros y procesa cada uno, acumulando su tamaño*/
acFilesToZip := Array( Len( aFiles ) )
FOR EACH aFile IN aFiles
acFilesToZip[ HB_EnumIndex() ] := { cFileName( aFile[ F_NAME ] ) , ;
aFile[ F_SIZE ] / 1024 , ;
aFile[ F_DATE ] , ;
cFilePath( aFile[ F_NAME ] ) }
/*acumula total de tamaños de ficheross*/
nSizeFilesToZip += aFile[ F_SIZE ]
NEXT
/*se obtiene la suma de los tamaños de ficheros a respaldar en KB*/
nSizeFilesToZip /= 1024
ELSE
/*por defecto un elemento en el arreglo para que no de problemas el browse*/
acFilesToZip := { { "", 0, CToD( "" ), "" } }
nSizeFilesToZip := 0
nTotalFilesToZip := 0
ENDIF
/*pasa el arreglo al browse*/
oBrowseZip:SetArray( acFilesToZip )
oBrowseZip:Refresh( TRUE )
oBrowseZip:SetFocus()
/*limpia arreglo y llama al colecor de basura de xharbour*/
aFiles := NIL
hb_gcAll()
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE SetFileZip()
LOCAL cFile := ""
/*si fichero de respaldo estara en disco duro y no en floppy*/
IF ! lZipToFloppy
/*solicita el nombre con la unidad destino incluido*/
cFile := cGetFile( "ZipFile | *.zip", "Nombre de fichero de respaldo ", 1, "c:\", XBL_SAVEFILE, XBL_WITHLONGNAME )
cFile := RTrim( cFile )
/*agrega la extencion ZIP de ser necesario*/
IF Empty( cFileExt( cFile ) )
cFile += ".zip"
ENDIF
ELSE
/*solo pide nombre de fichero*/
cFile := Space( 25 )
// lOk := BoxGet( "Introdusca dato", "Introdusca nombre del fichero de respaldo en unidad de diskette <A>", @cFile )
/*agrega al nombre de fichero de respaldo la unidad*/
IF lOk
/*TODO: establecer posible malas entradas por parte del usuario*/
/*agrega unidad de diskette A al nombre de fichero dado, y de ser necesario*/
cFile := "A:\" + RTrim( cFile )
/*agrega la extencion ZIP de ser necesario*/
IF Empty( cFileExt( cFile ) )
cFile += ".zip"
ENDIF
ENDIF
ENDIF
/*actualiza nombre de directorio fuente*/
cFolderTargetZip := cFile
oFolderTargetZip:Refresh()
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE DoMakeZip( oBrowseZip )
LOCAL lOkZip := FALSE
LOCAL acFiles := Array( Len( acFilesToZip ) )
LOCAL bOnZipFile := { | cFile, nFile | UpdateMeterZip( nFile ) }
LOCAL bOnSetDiskZip := { | nDisk | MsgInfo( "Por favor inserte el disco # " + Str( nDisk,,, XBL_TRIM ) ) }
/*verifica que existan ficheros a respaldar y el nombre del fichero de respaldo se haya definido*/
//
IF Empty( cFolderSourceZip ) .OR. Empty( cFolderTargetZip ) .OR. ( Len( acFilesToZip ) = 1 .AND. acFilesToZip[ 1, 1 ] = "" )
MsgStop( "Error, debe definir un nombre para fichero de respaldo." )
RETURN
ENDIF
//
/*se extra solo el nombre de los ficheros a respaldar incuyendo su path*/
AEval( acFilesToZip, { | aFile, i | acFiles[ i ] := aFile[ XBL_FILEPATH ] + aFile[ XBL_FILENAME ] } )
/*establece limites de valores de control meter*/
oFilesCountZip:SetRange( 0, nTotalFilesToZip )
oFilesCountZip:SetPos( 0 )
/*desactiva botones*/
//oGetFolderSourceZip:disable()
oGetFolderTargetZip:disable()
oDoCompress:disable()
oClose:disable()
/*realiza la compresion de los ficheros*/
IF lZipToFloppy
hb_SetDiskZip( bOnSetDiskZip )
lOkZip := hb_ZipFileByPKSpan( cFolderTargetZip , ;
acFiles , ;
HBL_ZIPLEVEL , ;
bOnZipFile , ;
XBL_ZIPOVERWRITE , ;
NIL , ;
XBL_ZIPWITHPATH )
ELSE
hb_SetDiskZip( { || NIL } )
lOkZip := hb_ZipFile( cFolderTargetZip , ;
acFiles , ;
HBL_ZIPLEVEL , ;
bOnZipFile , ;
XBL_ZIPOVERWRITE , ;
NIL , ;
XBL_ZIPWITHPATH )
ENDIF
/*verifica proceso e informa al usuario*/
IF lOkZip
MsgInfo( "¡¡¡ La creación del fichero de respaldo ha tenido éxito !!!","" )
ELSE
MsgStop( "¡¡¡ La creación del fichero de respaldo ha fallado !!!","" )
ENDIF
//
/*reinicia controles*/
cDestino := cFolderTargetZip
/*activa botones*/
oGetFolderTargetZip:enable()
oDoCompress:enable()
oClose:enable()
/*limpia arreglo y llama al colecor de basura de xharbour*/
acFiles := NIL
hb_gcAll()
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE UpdateMeterZip( nFile )
oFilesCountZip:SetPos( nFile )
SysRefresh()
RETURN
/*--------------------------------------------------------------------------*/
*************************************
FUNCTION COPIASUNZIP(nSerie,cMultiples)
*************************************
LOCAL oFont
LOCAL oDlg
LOCAL oBrowseUnZip
Local cModulo:=GetModuleFilename(GetInstance())
Local cDir:=SUBSTR(ALLTRIM(cModulo),1,LEN(ALLTRIM(cModulo))-11)
Local oCursorMano
//
IF VAL(SUBSTR(cMultiples,1,2)) > 0
cDir:= cDir+"COMU"+SUBSTR(cMultiples,1,2)+"\"
ENDIF
//
PRIVATE cDestino:=ALLTRIM(FRECU2->RutaZip)
/*variables de seccion unzip*/
PRIVATE oSourceUnZip, cSourceUnZip
PRIVATE oGetSourceUnZip
PRIVATE oUnZipWithPath, lUnZipWithPath
PRIVATE oGetFolderTargetUnZip
PRIVATE oFolderTargetUnZip, cFolderTargetUnZip
PRIVATE oFilesCountUnZip, nTotalFilesToUnZip
PRIVATE nSizeFilesToUnZip, nSizeFilesToUnZipC
PRIVATE oDoUnCompress
PRIVATE acFilesToUnZip := { { "", 0, 0, CToD( "" ), "" } }
/*valores inciaiales de seccion unzip*/
cSourceUnZip := cDestino
cFolderTargetUnZip := cDir
lUnZipWhitPath := TRUE
nTotalFilesToUnZip := 0
nSizeFilesToUnZip := 0
nSizeFilesToUnZipC := 0
//
/*definiciones de objetos icon y font*/
DEFINE CURSOR oCursorMano RESOURCE "Hand"
DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-10
/*definicion de dialogo*/
DEFINE DIALOG oDlg NAME "COPIASUNZIP" TITLE "Restaurar copias de seguridad comprimidas" FONT oFont COLOR RGB(0,0,0),RGB(245,158,146)TRANSPARENT
oDlg:lHelpIcon:=.F.
/*redefinicion de controles de pagina #2*/
REDEFINE BTNBMP oBitmap RESOURCE "CANDADO2" ID 100 OF oDlg;
ACTION oDlg:End() NOBORDER TRANSPARENT
REDEFINE GET oSourceUnZip ;
VAR cSourceUnZip ;
ID 101 OF oDlg ;
COLOR rgb(0,0,0),rgb(255,200,100) READONLY
REDEFINE BUTTON oGetSourceUnZip ;
ID 102 OF oDlg ;
ACTION GetFileToUnZip( oBrowseUnZip )
oGetSourceUnZip:cToolTip := " Seleccionar fichero a descomprimir "
REDEFINE LISTBOX oBrowseUnZip FIELDS "" ;
HEADERS "Nombre", "Tamaño", "Tamaño comp.", "Fecha", "Ruta" ;
SIZES 100, 80, 80, 80, 150 ;
ID 103 OF oDlg
oBrowseUnZip:SetArray( acFilesToUnZip )
oBrowseUnZip:bLine = { || { acFilesToUnZip[ oBrowseUnZip:nAt ][ 1 ],;
cValToChar( acFilesToUnZip[ oBrowseUnZip:nAt ][ 2 ] ),;
cValToChar( acFilesToUnZip[ oBrowseUnZip:nAt ][ 3 ] ),;
cValToChar( acFilesToUnZip[ oBrowseUnZip:nAt ][ 4 ] ),;
cValToChar( acFilesToUnZip[ oBrowseUnZip:nAt ][ 5 ] ) } }
//
IF FILE(cDestino)
GetFilesFromZip( cDestino, oBrowseUnZip )
ENDIF
//
REDEFINE GET oFolderTargetUnZip ;
VAR cFolderTargetUnZip ;
ID 105 OF oDlg ;
WHEN FALSE COLOR CLR_BLACK, CLR_MENTA2
oFilesCountUnZip := TProgress() :Redefine( 107, oDlg )
REDEFINE BUTTONBMP oDoUnCompress ID 108 OF oDlg;
ACTION DoMakeUnZip( oBrowseUnZip,nSerie,oDlg,cMultiples );
BITMAP "ACEPTAR" PROMPT " Restaurar" TEXTRIGHT
oDoUnCompress:cToolTip := "Restaurar ficheros en la ruta indicada "
REDEFINE BUTTONBMP oClose ID 110 OF oDlg;
ACTION oDlg:END();
BITMAP "SALIR" PROMPT " Salir" TEXTRIGHT
oClose:cToolTip := " Salir "
oDoUnCompress:oCursor:=oCursorMano
oClose:oCursor:=oCursorMano
oGetSourceUnZip:oCursor:=oCursorMano
/*activacion de dialogo*/
ACTIVATE DIALOG oDlg CENTER
oFont : End()
RETURN NIL /*Fin*/
PROCEDURE GetFileToUnZip( oBrowseUnZip )
LOCAL cFile
/*pide al usuario que seleccione el fichero de respaldo*/
cFile := cGetFile( "ZipFile | *.zip", "Nombre de fichero de respaldo a restaurar", 1, "c:\", XBL_OPENFILE, XBL_WITHLONGNAME )
/*verifica si realmente se paso el fichero*/
IF ! Empty( cFile )
/*muestra el nombre del fichero en el dialogo*/
cSourceUnZip := cFile
oSourceUnZip:refresh()
/*extrae informacion del fuchero de respaldo*/
GetFilesFromZip( cFile, oBrowseUnZip )
ENDIF
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE GetFilesFromZip( cFile, oBrowseUnZip )
LOCAL aFiles := hb_GetFilesInZip( cFile, XBL_GETFULL_INFOZIP )
LOCAL aFile
/*obtiene el numero de archivos a descomprimir*/
nTotalFilesToUnZip := Len( aFiles )
/*vereficia el valor retornado por la funcion, si es arreglo y si tiene elementos*/
IF ValType( aFiles ) = "A" .AND. nTotalFilesToUnZip > 0
/*inicializa arreglo en cero*/
acFilesToUnZip := Array( nTotalFilesToUnZip )
/*procesa cada fichero extrayendo la informacion que interesa*/
FOR EACH aFile IN aFiles
acFilesToUnZip[ HB_EnumIndex() ] := { cFileName( aFile[ XBL_IZNAME ] ), ;
aFile[ XBL_IZSIZEN ] / 1024 , ;
aFile[ XBL_IZSIZEC ] / 1024 , ;
aFile[ XBL_IZDATE ] , ;
cFilePath( aFile[ XBL_IZNAME ] ) }
/*acumula totales de tamaños de ficheros - normal y comprimido*/
nSizeFilesToUnZip += aFile[ XBL_IZSIZEN ]
nSizeFilesToUnZipC += aFile[ XBL_IZSIZEC ]
NEXT
/*obtiene los totales en Kb*/
nSizeFilesToUnZip /= 1024
nSizeFilesToUnZipC /= 1024
/*pasa el arreglo al browse*/
oBrowseUnZip:SetArray( acFilesToUnZip )
oBrowseUnZip:Refresh( )
ENDIF
oBrowseUnZip:SetFocus()
/*limpia arreglo y llama al colecor de basura de xharbour*/
aFiles := NIL
hb_gcAll()
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE SetFolderUnZip()
LOCAL cDir := ""
/*pide al usuario de el directorio destino de los datos*/
cDir := cGetDir( "Seleccione el directorio donde se restaurarán los ficheros respaldados" )
/*verifica si se selecciono un directorio*/
IF Empty( cDir )
MsgStop( "Error, defina un directorio destino para los datos !!!" )
RETURN
ELSE
/*muestra el nombre del directorio seleccionado*/
cFolderTargetUnZip := cDir
oFolderTargetUnZip:Refresh()
ENDIF
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE DoMakeUnZip( oBrowseUnZip,nSerie,oDlg,cMultiples )
LOCAL lOkUnZip := FALSE
LOCAL acFiles := Array( Len( acFilesToUnZip ) )
LOCAL bOnUnZipFile := { | cFile, nPos | UpdateMeterUnZip( cFile, nPos ) }
LOCAL bOnSetDiskZip := { | nDisk | MsgInfo( "Por favor introduzca el disco # " + Str( nDisk,,, XBL_TRIM ) ) }
/*verifica que existan ficheros a respaldar y el nombre del fichero de respaldo se haya definido*/
IF Empty( cSourceUnZip ) .OR. Empty( cFolderTargetUnZip ) .OR. ( Len( acFilesToUnZip ) = 1 .AND. acFilesToUnZip[ 1, 1 ] = "" )
MsgStop( "Error, debe definir un fichero de respaldo válido. " )
RETURN
ENDIF
//
IF MsgNoYes( OemToAnsi( " Atenci¢n !!!" ) + CRLF + CRLF +;
OemToAnsi( "¨ Seguro que quiere restaurar las copias de seguridad ?") +CRLF+CRLF+;
OemToAnsi( " La ejecuci¢n de este proceso conlleva la p‚rdida ") +CRLF+;
OemToAnsi( " de los datos actuales que ser n reemplazados por ")+CRLF+;
OemToAnsi( " los datos contenidos en las copias de seguridad"),"Restaurar copias de seguridad" )
// Segunda confirmacion
IF MsgNoYes( OemToAnsi( " Atenci¢n !!!" ) + CRLF + CRLF +;
OemToAnsi( " Por £ltima vez: ") +CRLF+CRLF+;
OemToAnsi( " ¨ Tiene la completa seguridad de querer restaurar las copias ? ") +CRLF+;
OemToAnsi( ""),"Restaurar copias de seguridad" )
DbCloseAll()
/*se extra solo el nombre de los ficheros a respaldar incuyendo su path*/
AEval( acFilesToUnZip, { | aFile, i | acFiles[ i ] := aFile[ XBL_UZFILEPATH ] + aFile[ XBL_UZFILENAME ] } )
/*establece limites de valores de control meter*/
oFilesCountUnZip:SetRange( 0, nTotalFilesToUnZip )
oFilesCountUnZip:SetPos( 0 )
/*desactiva botones*/
oGetSourceUnZip:disable()
// oGetFolderTargetUnZip:disable()
oDoUnCompress:disable()
oClose:disable()
/*realiza la descompresion del fichero*/
hb_SetDiskZip( bOnSetDiskZip )
lOkUnZip := hb_UnZipFile( cSourceUnZip , ;
bOnUnZipFile , ;
lUnZipWithPath , ;
NIL , ;
cFolderTargetUnZip + "\" )
/*verifica proceso e informa al usuario*/
IF lOkUnZip
MsgInfo( "¡¡¡ La restauración del fichero de respaldo ha tenido éxito !!!" ,"")
Indices(nSerie,.t.,cMultiples)
oDlg:End()
ELSE
MsgStop( "La restauración del fichero de respaldo ha fallado !!!","" )
Abrefi()
ENDIF
//
oClose:enable()
/*limpia arreglo y llama al colector de basura de xharbour*/
acFiles := NIL
hb_gcAll()
//
ENDIF//de la segunda confirmaci¢n
//
ENDIF
//
oClose:enable()
/*limpia arreglo y llama al colector de basura de xharbour*/
acFiles := NIL
hb_gcAll()
RETURN
/*--------------------------------------------------------------------------*/
PROCEDURE UpdateMeterUnZip( cFile, nPos )
oFilesCountUnZip:SetPos( nPos )
SysRefresh()
RETURN
/*--------------------------------------------------------------------------*/