Cómo puedo hacer en Visual FoxPro para poder comparar dos provectos

Doc por favor quisiera que me ayudes, necesito saber como puedo hacer para poder comparar dos provectos que tengo, en realidad son del mismo sistema pero necesito saber que cambios se hicieron uno con respecto al otro, esto para controlar mis cambios, es urgente amigo, necesito una forma de accesar al código de forma rápida y segura y poder comparar los objetos de fox.
Gracias.
Alex.

1 Respuesta

Respuesta
1
Pues hay varias formas de hacer eso, intenta usando un comando de MS-DOS.
C:\> FC C:\Ruta\TuProyecto1\*.* C:\Ruta\TuProyecto2\*.* > C:\Ruta\Resultado.txt
Esa instrucción creará un archivo de texto llamado "Resultado.txt", el cual contendrá la comparación de cada uno de los archivos existentes en ambas carpetas.
¿Brother y como podría automatizar esto?
¿Cómo lo llevo al fox podrías enviarme un ejemplo?
Esto por que voy a comparar 200 archivos entre reportes forms programas etiquetas etc etc... gracias amigo por tu respuesta
Pues si necesitas comparar muchos archivos recurrentemente, se me ocurre que puedes usar una función para pasar todo el contenido de un archivo a una variable, así puedes hacer las comparaciones más fácilmente.
Debes tomar en cuenta el tamaño de los archivos que quieras comparar, ya que si son archivos muy grandes (creo que más de 16 MB) vas a tener problemas a la hora de pasarlos a una variable de Fox.
cRuta1 = "F:\Filex\*.*"
cRuta2 = "D:\Filex\*.*"
! DIR &cRuta1 /B /S > Ruta1.txt
! DIR &cRuta2 /B /S > Ruta2.txt
CREATE CURSOR Archivos1 (Ruta c(254), Nombre c(50))
CREATE CURSOR Archivos2 (Ruta c(254), Nombre c(50))
SELECT Archivos1
        APPEND FROM Ruta1.txt TYPE DELIMITED
        REPLACE ALL Nombre WITH JUSTFNAME(Ruta)
SELECT Archivos2
        APPEND FROM Ruta2.txt TYPE DELIMITED
        REPLACE ALL Nombre WITH JUSTFNAME(Ruta)
DELETE FILE Ruta1.txt
DELETE FILE Ruta2.txt
SELECT a.Ruta as Ruta1, b.Ruta as Ruta2, 0 as Difer ;
        FROM Archivos1 a, Archivos2 b ;
        WHERE b.Nombre == a.Nombre ;
        ORDER BY a.Ruta ;
        INTO CURSOR Compara READWRITE
USE IN Archivos1
USE IN Archivos2
SCAN
        IF FILE(Ruta1) AND FILE(Ruta2)
                IF FILETOSTR(Ruta1) == FILETOSTR(Ruta2)
                        REPLACE Difer WITH 1       && Sin diferencias
                ELSE
                        REPLACE Difer WITH 2       && Con diferencias
                ENDIF
        ELSE
                REPLACE Difer WITH 3           && Archivo Inválido o inexistente
        ENDIF
Endscan
Como te digo, tiene algunos detalles y no te funcionaría en algunos casos. Otra forma de hacerlo sería utilizando la función [ADIR()] que te devuelve un Arreglo con todos los archivos encontrados cierto directorio. Podrías usar ese en vez del comando MS-DOS.
Este ejemplo fue programado en Visual FoxPro 9.0

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas