Page 1 of 1

HB_ZIPFILE

PostPosted: Fri Apr 18, 2008 9:16 pm
by Manuel Valdenebro
Hasta ahora, vengo utilizando la aplicación Easy-Backup en mis aplicaciones satisfactoriamente. Pero como el programa es muy pesado, he empezado a probar la función de xHarbour HB_ZIPFILE.
Utilizo un array para incluir los ficheros que necesito pero observo que no incluye en el fichero ZIP de destino, las tablas que tiene abiertas la aplicación en ese momento. Logicamente, si cierro las tablas no hay ningún problema, pero ¿alguien conoce algún método que evite este cierre previo?.

PostPosted: Fri Apr 18, 2008 9:25 pm
by sysctrl2
Manuel,

yo lo que hago , es copiar a una carpeta tmp,

en caso de que el archivo esta abierto..

y los que empaco son los que estan en la carpeta de tmp.




saludos..

PostPosted: Sat Apr 19, 2008 4:53 am
by Manuel Valdenebro
sysctrl2 wrote:yo lo que hago , es copiar a una carpeta tmp,


César,

¿Como realizas la copia, porque COPY FILE tampoco copia los ficheros abiertos?

Muchas gracias

PostPosted: Sat Apr 19, 2008 12:11 pm
by rogerio
Manuel

utilizo

CopyFile()

que funciona bem com os arquivos abertos.

Ex.:
CopyFile( "C:\CP300\TABCAT.DBF", aonde+"\"+"TABCAT.DBF", .f. )

aonde = diretorio destino


//-----------------------

DLL32 FUNCTION CopyFile( cExFile AS LPSTR, ;
cNewFile AS LPSTR, ;
lFailIfEx AS LONG ) ;
AS BOOL FROM "CopyFileA" LIB "Kernel32.dll"
//------------------------------

[]'s

Rogerio

PostPosted: Sat Apr 19, 2008 3:20 pm
by Manuel Valdenebro
Rogerio,

Gracias por contestar, pero no funciona. Lo he intentado con el siguiente código, pero solo copia los ficheros no abiertos. Si antepongo DBCLOSEALL(), entonces todo correcto:


lMkdir ("temp")
adir := DIRECTORY ( "*.dbf" )

FOR aFile=1 TO LEN (aDir)
AADD(aOrigen, aDir [aFile,1] )
copyfile( aDir[aFile,1], ("temp\" + aDir[aFile,1] ), .f. )
NEXT

// añade al array los ficheros *.fpt
adir := DIRECTORY ( "*.fpt" )

FOR aFile=1 TO LEN (aDir)
AADD(aOrigen, aDir [aFile,1] )
copyfile( aDir[aFile,1], ("temp\" + aDir[aFile,1] ), .f. )
NEXT
RETURN nil


DLL32 FUNCTION CopyFile( cExFile AS LPSTR, cNewFile AS LPSTR, ;
lFailIfEx AS LONG );
AS BOOL PASCAL FROM "CopyFileA" LIB "Kernel32.dll"


PostPosted: Sat Apr 19, 2008 7:45 pm
by rogerio
Manuel

a mim funciona perfeitamente.
Foi criado um programa para back-up automático que copia os arquivos .dbf para um drive externo.
Os arquivos .dbf podem estar abertos em vários terminais sem problemas, no entanto eles são abertos em modo compartilhado - shared.
Não testei com os arquivos abertos em modo exclusivo. Veja se não é esse o caso.

[]'s

Rogerio

PostPosted: Sun Apr 20, 2008 9:22 pm
by Manuel Valdenebro
Rogerio,

Llevas toda la razón. Ahora funciona.

Habia olvidado poner al principio del programa SET EXCLUSIVE OFF.

Muito obrigado.