Page 1 of 1

ZIP - Ayuda

Posted: Mon Sep 17, 2018 7:22 pm
by SALINETAS24
Hola, estoy haciendo unas modificaciones con el ejemplo para la creacion de copias de seguridad y no me funciona. No he podido detectar el error.
Tomamos como punto de partida que el directorio (la ruta), donde se encuentran las bases de datos a comprimir están en una variable, ya que en el programa el usuario decide donde trabajar.
Pues no consigo que el fichero ".zip" contenga nada..
Os paso comprimido la modificación que he realizado sobre el programa con el resultado NEGATIVO de la prueba.
Gracias por vuestra ayuda y una cervecita bien fresquita..

Re: ZIP - Ayuda

Posted: Mon Sep 17, 2018 10:46 pm
by andyglezl
Tal vez estos post te ayuden...

viewtopic.php?f=15&t=440&hilit=respaldo


P.D.
Por lo que veo en tu prg, puede ser que en esa carpeta que defines no existan
archivos ".TXT" o sea incorrecta.

LOCAL cDir:="c:\hmg.3.4.4\samples\misce\datos\"

En mi instalaciòn se llama así:
D:\HMG\3.4.4\SAMPLES\Miscellaneous

Re: ZIP - Ayuda

Posted: Tue Sep 18, 2018 4:44 pm
by SALINETAS24
Hola Andy, gracias por contestar, muy amable por tu parte.
He revisado el Post y no encuentro solución.
El tema del subdirectorio, como es para una demo, ha sido creado ex-profeso para ejecutar este programa, por eso le he llamado MISC y no MISCELLANEUS 8-) para no liarla...., por lo tanto es correcto.
Lo que si que me he dado cuenta es lo siguiente ...,
si la línea donde defino la variable nFich

Code: Select all

	LOCAL cDir:="c:\hmg.3.4.4\samples\misce\datos\"
que define la ruta a buscar los ficheros, (esta variable prodría ser asignada por la función "GetFolder()" la cambio por

Code: Select all

	LOCAL cDir:="datos\"
me funciona..., otra prueba..., he cambiado el subdirectorio a otra zona para evitar el hmg.3.4.4 (por si los puntitos, pero poniendo la ruta completa) y me sigue cascando, he cambiado de unidad, realizando la copia sobre ficheros en el unidad "D" (ruta completa D:\BASURA\MISCE\DATOS\) y también casca, por lo que la conclusión es clara.., salvo que algún "GURU" del HMG diga lo contrario..., esta función no anda bien.
La ruta de acceso no puede llevar la LETRA DE LA UNIDAD, arto difícil si la copia de seguridad se quiere realizar sobre unos datos que son grabados en una unidad de disco, distinta a donde ejecutamos el programa, o si se quisiera hacer una función genérica para el usuario de nuestro programa para que pueda realizar copias de seguridad de los ficheros, que han podido ser grabados en "C:" o en "D:" o en "J:"....

Re: ZIP - Ayuda

Posted: Tue Sep 18, 2018 5:54 pm
by SALINETAS24
Solucionado..., joder.., en ocasiones los arboles no me dejan ver el bosque!!!!

Aquí os paso el código. He llegado a la conclusión que la función en cuestión tiene que trabajar en la unidad donde residen los ficheros, por narices, por lo tanto.., seamos nosotros los que nos movamos.
Para cual utilizamos la función DIRCHANGE y GetCurrentFolder()...

Code: Select all

#include "hmg.ch"

Function main()
LOCAL cDir:="d:\cursos\misce\datos\"      // Cargo donde están los datos, mejor con GETFOLDER()
LOCAL ac_Dir:=GetCurrentFolder()            //-> Me quedo el directorio donde trabajo
	
	DEFINE WINDOW form_1 ; 
		AT 114,218 ;
		WIDTH 334 ;
		HEIGHT 276 ; 
		TITLE 'ZIP TEST' ; 
		MAIN 

		DEFINE MAIN MENU

			DEFINE POPUP "Test"
				MENUITEM 'Create Zip' ACTION CreateZip(cDir,AC_DIR)
			END POPUP

		END MENU

		@ 80,120 PROGRESSBAR Progress_1 RANGE 0,10 SMOOTH

		@ 120,120 LABEL label_1 VALUE ''


	END WINDOW 

	form_1.center
	form_1.activate

Return NIL

*------------------------------------------------------------------------------*
Function CreateZip(cDir,AC_DIR)
*------------------------------------------------------------------------------*
local aDir:=Directory(cDir+"*.txt")
local afiles:={}
Local x
local nLen
LOCAL lCambio:=.f.

         // --> Si he cambiado de unidad...
	IF SUBSTR(AC_DIR,1,1)!=SUBSTR(cDir,1,1)
		lcambio:=.t.
		dirchange(cDir)
		msgbox("cambio a "+GetCurrentFolder() )
	ENDIF
	// --> Esto es por si alguno no viene sin unidad
	IF SUBSTR(cDir,2,1)=":"
		cDir:=SUBSTR(cDir,3)
	ENDIF

	For x:=1 to len(aDir)
	 	aadd(afiles,cDir+adir[x,1])
		msgbox(aFiles[x])
	next
	nLen=len(afiles)
    Form_1.Progress_1.RangeMin := 0
    Form_1.Progress_1.RangeMax := nLen

	COMPRESS afiles ;
		TO 'ZipTest.Zip' ;
		BLOCK {|cFile,nPos| ProgressUpdate( nPos , cFile ) }  ;
		OVERWRITE

	IF lCambio   // regreso donde estaba
		dirchange(ac_dir)
		msgbox("regreso a "+GetCurrentFolder() )
	endif
		
		
Return nil

*------------------------------------------------------------------------------*
function ProgressUpdate(nPos , cFile )
*------------------------------------------------------------------------------*

	Form_1.Progress_1.Value := nPos
	Form_1.Label_1.Value := cFile

Return Nil




Ale amigos.., cervezas fresquitas para todos :lol:

Re: ZIP - Ayuda

Posted: Wed Sep 19, 2018 2:04 pm
by Steed
Thansk for sharing the solution,

HELP - FICHERO DE AYUDA - CHM

Posted: Tue Sep 25, 2018 8:22 pm
by SALINETAS24
Hola. Estoy haciendo pruebas con el PRG que está en SAMPLES\BASICS\HELP y tengo un pregunta.
¿hay alguna forma que el fichero de ayuda solo se ejecute una vez..?
Si pulso F1 me aparece la Ayuda, pero si regreso al MENU sin salir de la ayuda y vuelvo a pulsar F1 me la vuelve a cargar..., y así hasta el infinito y más allá....
¿Tenemos alguna forma de evitar la redundancia..=?

Pd. Lo he puesto aqui este tema, no me deja crear un tema nuevo.., no se lo que pasa.

Re: ZIP - Ayuda

Posted: Tue Sep 25, 2018 9:32 pm
by SALINETAS24
Hola otra vez, siguiendo con el hilo anterior. Os paso la prueba del programa HELP. He modificado el primer boton y llamo a una ventana que pide un dato. Si en ese momento pulsamos F1 nos abre por dos veces el fichero de ayuda.., dos veces :evil: . He realizado varias pruebas y siempre hace lo mismo.., dos veces.
Alguien sabe algo al respecto. Os paso el fichero comprimido para que lo comprobeis.

Muchas gracias y una cervecita bien fresquita...

Re: ZIP - Ayuda

Posted: Wed Sep 26, 2018 5:35 pm
by luisvasquezcl
Hola Salinetas,
la función Directory() te devuelve un arreglo con los nombres de los ficheros y no incluye el path de ellos.
Por lo tanto, cuando vas a solicitar los archivos debes agregarle el path.
por ejemplo:

Code: Select all

local cPath := 'd:\misarchivos'
local aDir := Directory( cPath+'\*.txt')
local aArchivos := {}

For i := 1 to Len( aDir )
  aadd( aArchivos, cPath + '\' + aDir[ i ][ 1 ] )
Next
Espero te sea de ayuda.
Saludos cordiales,
Luis Vasquez

Re: ZIP - Ayuda

Posted: Wed Sep 26, 2018 6:08 pm
by SALINETAS24
Hola Luis, gracias por contestar. El tema del Zip ya lo tengo solucionado. He puesto otro problema que tengo, ahora con los ficheros HELP pero como tenemos el "FORUM" estropeado lo he colocado en este tema.
No se si tendrás experiencia con la herramienta esa del "HELP", pero a mi con el window xp cada vez que le doy al F1 me abre dos vece la ayuda.., he puesto un enlace línea mas arriba.
Gracias por la ayuda

Re: ZIP - Ayuda

Posted: Sat Oct 06, 2018 4:05 pm
by mustafa
Hola amigos:
Estoy experimentando con el tema de Zip
Me ha servido como ejemplo la Demo Minigui Ext. Samples\Zip
y la he modificado un poco.
en [ Create Backup ] eliges la carpeta que quieras hacer el Zip

con [ View Zip ]
Creo una Base de Datos donde me informa de los Zip con extensiones
' *.*',' *.Docx ',' *.Xlsx ',' *.Dbf',' *.Pdf',' *.Jpg' que me indica nombre
fecha de entrada y fecha de salida y la Hora y finalmente
con [ Recover Backup ]
Descomprimimos el Zip

Mustafa