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.
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