FoxPress – Julio-Agosto 2003

 

      Los Ganchos del Proyecto y Copias de Seguridad

                                                                                                                                                        copia.zip

http://www.fpress.com/

 

                        

En VFP 7.0 se introdujeron los llamados ‘Ganchos del Proyecto’ que te permite dar nuevas posibilidades a los proyectos de VFP.

 

  Cada vez que uno se enfrenta a nuevas novedades en nuevas versiones es un poco reacio a usarlas siguiendo el criterio de ‘más vale malo conocido que bueno por conocer’.  Sin embargo cuando se hace muy patente las mejoras que incorpora entonces todas las reticencias iniciales desaparecen. Esto es lo que se pretende con este artículo, demostrar de una forma fácil y asequible una ventaja muy práctica que te dan los ganchos del proyecto y es el poder usarlos para hacer copias de seguridad.

 

   El objetivo es un sistema fácil y cómodo de hacer copias de seguridad de tus proyectos. La propuesta es: cada vez que se abra un proyecto y sea la primera vez que se abre en ese día se procede a realizar una copia de seguridad de todo el proyecto.

 

   Al lado del proyecto existe un fichero *.INI en el que se guardan dos datos:

 

-    Directorio donde se van a guardar las copias de seguridad

-    Fecha de la última copia de seguridad.

 

   Para hacer las copias de seguridad pudes usar el Winzip o la herramienta que estimes oportuna, en mi caso uso el veterano ARJ que además puedo distribuirlo con los ejemplos de este artículo. Si quieres usar otro compresor te bastará con cambiar esa línea de código.

 

Los Archivos necesarios

 

  Backup.INI

 

  Tenemos que crearnos un fichero *.INI que en nuestro caso le vamos a llamar Backup.ini y que tiene el siguiente contenido:

 

[backupdir]

backupdir=c:\backup

 

[backupFecha]

backupFecha=26/06/2003

 

   Como se puede ver, son dos epigrafes y una línea en cada uno de ellos con el mismo nombre.

 

   El primer epigrafe me guarda el directorio donde se encuentran las copias de seguridad.

 

   El segundo epigrafe la fecha de la ultima copia de seguridad realizada.

 

   MisUtiles.VCX

 

   Esta fichero de clases tiene una clase llamada miGancho y se basa en la clase  ProjectHook.  En esta clase hemos escrito sólo en el INIT con lo que este gancho se dispara siempre que se abre el proyecto. El Código que se ha puesto en el INIT es:

 

lcClassPath = ADDBS(JUSTPATH( THIS.CLASSLIBRARY ))

 

DECLARE GetPrivateProfileString IN WIN32API ;

   STRING sectionName, STRING KeyName, STRING stdVal,;

    STRING @BUFFER, INTEGER BufferLen, STRING IniName

 

DECLARE integer WritePrivateProfileString in Win32API as WritePrivStr ;

  String cSection, String cKey, String cValue, String cINIFile

 

lcBuffer = SPACE(255)

GetPrivateProfileString( [backupdir],'backupdir',"",@lcBuffer, LEN(lcBuffer), lcClassPath+"backup.ini")

 

IF NOT EMPTY( lcBuffer)

   lcBackupDir = ADDBS(STRTRAN( lcBuffer, CHR(0),""))

   IF NOT DIRECTORY( lcBackupDir)

      MD (lcBackupDir)

   ENDIF

ELSE

   lcBackupDir = ADDBS(FULLPATH(CURDIR()))

ENDIF

 

THIS.cBackUpDir = lcBackupDir

 

lcBuffer = SPACE(255)

GetPrivateProfileString( [backupFecha],'backupFecha',"",@lcBuffer, LEN(lcBuffer), lcClassPath+"backup.ini")

 

IF NOT EMPTY( lcBuffer)

   lcbackupFecha = LEFT(ADDBS(STRTRAN( lcBuffer, CHR(0),"")),10)

ELSE

   lcbackupFecha = DTOC(DATE())

ENDIF

 

THIS.cbackupFecha = lcbackupFecha

 

IF ctod(THIS.cbackupFecha) < DATE()

ELSE

  RETURN

ENDIF

 

IF _VFP.ACTIVEPROJECT.FILES.COUNT > 0

 

   lcYear = ALLTRIM( STR( YEAR(DATE())))

   lcMonth = PADL(ALLTRIM( STR( MONTH(DATE()))),2,"0")

   lcDay = PADL(ALLTRIM( STR( DAY(DATE()))),2,"0")

 

   lcTempname = lcYear+lcMonth+lcDay

   lcTempname = lcTempname+"_"+CHRTRAN( TIME(), ":","")

   lcTempname = THIS.cBackUpDir + JUSTSTEM( _VFP.ACTIVEPROJECT.NAME)+lcTempname+"_PO"

 

    RUN /n3 ARJ.EXE a -x*.pdf -x*.exe -x*.arj -x*.doc &lcTempname

 

ENDIF

 

= WritePrivStr( [backupFecha],'backupFecha', DTOC(DATE()),lcClassPath+"backup.ini")

 

En el código puedes ver que se declaran las funciones del API que se van a usar, se cargan una serie de propiedades con el path de los archivos de Backup y la fecha de la última copia.

 

Una vez se tomen los datos anteriores usamos el ARJ para hacer la copia de seguridad. Seguramente tendrás que personalizartelo un poco para que puedas adaptarlo a tus necesidades.

 

¿Cómo usar los ‘Ganchos del Proyecto’?

 

Una vez tenemos ya todo nuestro código preparado, la pregunta que se nos plantea es: ¿dónde lo pongo?. Para relacionar el proyecto con ese trozo de código que es basicamente una clase, lo único que tienes que hacer son 4 pasos:

 

1. Abre el Proyecto.

2. Vete a la ventana de dialogo del proyecto a través de CRTL+J o a través del  menú Project - >Opciones.

3. La ventana de dialogo tiene un aspecto parecido a éste:




4. Marca el checkbox  “Clases del Proyecto:”.  Encuentra dondes está la librería de clases.-

 

 

 

5.  Selecciona tu archivo de clases que tiene la clase migancho y pulsa en ‘Acepar’.


Y ya está....

 

   Ya ves que es una forma sencilla, fácil de tener siempre una copia de seguridad diaria de todos los proyectos.

 

 

 

 

 

FoxPress – Julio – Agosto de 2003

© 2003 FoxPress. All rights reserved