FoxBin2Prg
Creador y Administrador del Proyecto: Fernando D. Bozzo - Blog con más información sobre FoxBin2Prg
Video de demostración
Ver demo en YouTube de FoxBin2Prg usado con PlasticSCM¿Qué es FoxBin2Prg y cómo se usa?
Es un programa pensado para ser utilizado con herramientas SCM (Administradores de Control de Código Fuente, como VSS, CVS, SVN) y herramientas DVCS (como Git, Mercurial, Plastic, and others), o como programa independiente, para hacer operaciones de Diff (ver diferencias) y Merge (mezclar cambios), que pretende sustituir a SccText/X y TwoFox y mejorar sus funcionalidades, generando versiones de texto estilo-PRG que permiten recrear el binario original.Ventajas:
- Genera archivos estilo "PRG" (no compilables), para comparación visual
- Permite hacer cambios en la versión Texto tan fácil como modificar PRG
- Todo el código de programa está en un solo PRG, para simplificar su mantenimiento
- Con las versiones Texto puedes regenerar los binarios originales, así que es útil como backup
- Las extensiones usadas son configurables si se crea el archivo FOXBIN2PRG.CFG
- Los métodos y propiedades de la versión Texto son ordenados alfabéticamente para acilitar su comparación
- Puede usar el seteo "UseClassPerFile" para crear archivos individuales por clase o miembro de DBC
- Aproveche la API usando foxbin2prg como un objeto
- Tiene compatibilidad con el SccText/X a nivel de parámetros, así puede ser usado como sustituto con SourceSafe
- Productividad: Puedes crear un acceso directo en la carpeta "SendTo" de tu Perfil de Windows, así puedes "enviar" el archivo seleccionado (pjx,pj2,etc) a Foxbin2prg.exe y a los scripts vbs incluidos, y hacer conversiones al vuelo
- Modifique los archivos TX2 estilo-prg con MODIFY COMMAND (sin compilar) para ver la sintaxis coloreada, o incluso usar el Document View para navegar los procedimientos
- Recupere sus proyectos SourceSafe (.pjx) desde sus archivos .pjm
Actualmente se soporta la conversión de archivos PJX,SCX,VCX,FRX,LBX,DBC,DBF y MNX, para los que genera versiones TEXTO con extensión PJ2,SC2,VC2,FR2,LB2,DC2,DB2 y MN2 que pueden ser reconfiguradas para compatibilizar con SourceSafe.
Uso:
versión EXE: (Recomendado y el más rápido)Tiene todo dentro, solo se necetita foxbin2prg.exe y filename_caps.exe/cfg
Versión PRG:
Se necesitan varios archivos: foxbin2prg.prg, todos los archivos props*.txt y filename_caps.exe/cfg
Nota: Todos los archivos mencionados deben estar en la misma carpeta. No se puede usar solo el PRG sin el resto de los archivos mencionados.
Para usar FoxBin2Prg desde el Explorador de archivos, puede crear 3 accesos directos de FoxBin2Prg.exe y moverlos a la carpeta "SendTo" en su perfil de Windows, así podrá "enviar" el archivo elegido (pjx,pj2,etc) a la opción seleccionada, y hacer conversiones-al-vuelo, luego renombre esos accesos directos y modifíquelos como sigue (asegúrese de que puede ver las extensiones de archivos del sistema):
Nombre---------------------- Click-Derecho/Propiedades/destino---------------- FoxBin2Prg - Binary2Text.lnk <path>\foxbin2prg.exe "BIN2PRG-SHOWMSG" FoxBin2Prg - Text2Binary.lnk <path>\foxbin2prg.exe "PRG2BIN-SHOWMSG" FoxBin2Prg.lnk <path>\foxbin2prg.exe "INTERACTIVE-SHOWMSG"
(Actualmente con la 3er opción se puede sustituir a las otras dos, usando una sola opción)
- Con la opción "BIN2PRG" o "PRG2BIN", puede procesar directorios o archivos individuales, pero solamente para el tipo de conversión preseleccionado
- Con FoxBin2Prg.exe solamente, puede procesar directorios o archivos individuales para cualquier tipo de conversión
- Con la opción "INTERACTIVE", un mensaje de confirmación será mostrado al procesar un directorio, para preguntar qué tipo de conversión realizar
- Con la opción "SHOWMSG" se mostrará un mensaje de estado al finalizar
Nota Importante: Cuando se procesa un directorio, el mismo es usado como base para la compilación de los binarios, por este motivo nunca se debería procesar más de un directorio en el mismo proceso, porque la compilación podría no ser satisfactoria. Para procesar más de un directorio (o proyecto), simplemente seleccione y procese cada uno por separado, en paralelo si lo desea, pero en procesos separados
Ejemplo de archivo de configuración FOXBIN2PRG.CFG si necesita cambiar extensiones
extension: SC2=SCA extension: VC2=VCA extension: PJ2=PJA ...
Usando la versión "EXE": (útil para ser llamado por programas de 3ros)
FOXBIN2PRG.EXE "<path>\file.scx" | Genera la versión Texto con extensión sc2 |
FOXBIN2PRG.EXE "<path>\file.sc2" | Regenera el binario con extensión scx |
FOXBIN2PRG.EXE "<path>\proy.pjx" "*" | Genera la versión Texto de todos los archivos del PJX, incluyendo el PJX |
FOXBIN2PRG.EXE "<path>\proy.pj2" "*" | Regenera el binario de todos los archivos del PJ2 |
FOXBIN2PRG.EXE "<path>\proy.pjx" "*-" | Genera la versión Texto de todos los archivos del PJX, excluyendo el PJX |
FOXBIN2PRG.EXE "<path>\proj.pj2" "*" | find /V "" | Regenera el binario de todos los archivos del PJ2 y genera un log a stdOut |
Usando la versión "PRG":
DO FOXBIN2PRG.PRG WITH "<path>\file.scx" | Genera la versión Texto con extensión sc2 |
DO FOXBIN2PRG.PRG WITH "<path>\file.sc2" | Regenera el binario con extensión scx |
DO FOXBIN2PRG.PRG WITH "<path>\proy.pjx", "*" | Genera la versión Texto de todos los archivos del PJX, incluyendo el PJX |
DO FOXBIN2PRG.PRG WITH "<path>\proy.pj2", "*" | Regenera el binario de todos los archivos del PJ2 |
DO FOXBIN2PRG.PRG WITH "<path>\proy.pjx", "*-" | Genera la versión Texto de todos los archivos del PJX, excluyendo el PJX |
Usando la versión "Objeto":
LOCAL loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") loCnv.execute( <params> )
Sintaxis:
Hay algunas diferencias en los parámetros cuando llama a fobin2prg.exe desde fuera (con RUN o desde otro EXE), o cuando se usa como un objeto y se trabaja directamente con el método "execute", el cual es más flexible y tiene más opciones:
EXE/objeto | Parametros | Valor de retorno |
---|---|---|
FoxBin2Prg.EXE | cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cCFG_File] ] ] ] ] ] ] ] ] ] | ErrorLevel 0=OK, 1=ERR |
obj.execute() | cInputFile [,cType [,cTextName [,lGenText [,cDontShowErrors [,cDebug [,cDontShowProgress [,oModule [,oEx [,lRelanzarError [,cOriginalFileName [,cRecompile [,cNoTimestamps [,cBackupLevels [,cClearUniqueID [,cOptimizeByFilestamp [,cCFG_File] ] ] ] ] ] ] ] ] ] ] ] ] ] ] | 0=OK, num=Código Error VFP |
Nota: Cuando se usa el EXE, si se usa cualquier combinación de ("-BIN2PRG", "-PRG2BIN", "-INTERACTIVE", "-SHOWMSG"), los parámetros cType y cInputFile se pueden intercambiar. Esto es útil cuando se trata con los accesos directos de Windows, en el cual los parámetros fijos deben estar en el acceso directo y el nombre del archivo es un parámetro variable que se recibe cuando se usa "Enviar a" FoxBin2Prg usando click-derecho en el Administrador de archivos.
Donde <params> son: | (!=Requerido | ?=Opcional) (@=por referencia | v=por valor), (IN/OUT) |
---|---|
c_InputFile | (v! IN ) Ruta completa del archivo a convertir |
cType | (v? IN ) Para compatibilidad con el SCCTEXT.PRG, indica el tipo de archivo (d=DBC, D=DBF, K=Form, B=Label, M=Menu, R=Report, V=Class) |
cTextName | (v? IN ) Para compatibilidad con el SCCTEXT.PRG, es el nombre del archivo de Texto a generar |
lGenText | (v? IN ) Para compatibilidad con el SCCTEXT.PRG, .T.=Generar Texto, .F.=Generar Binario |
cDontShowErrors | (v? IN )'1' para NO mostrar errores con MESSAGEBOX |
cDebug | (v? IN )'1' para depurar en el punto del error (solo modo desarrollo) |
cDontShowProgress | (v? IN )'1' para NO mostrar la barra de progreso |
cOriginalFileName | (v? IN ) Para los casos en los que inputFile es un nombre temporal y se necesita el nombre correcto original (por ejemplo: dentro de los archivos PJ2 y de las cabeceras TEXTO) |
cRecompile | (v? IN ) Si se indica un Path, recompilará el binario desde el mismo. Si se invoca desde SCCAPI, será Verdadero por defecto y si no será Falso por defecto |
cNoTimestamps | (v? IN )'1' para limpiar los Timestamps en texto y binarios. Util para minimizar las diferencias en operaciones de Diff y Merge ("1" is el valor por defecto desde la versión v1.19.9) |
- Nota: Por favor, lea los archivos README.txt y FoxBin2Prg.cfg para más información técnica
FoxBin2Prg.cfg - Si no se proporcionan valores, estos son los predeterminados | |
---|---|
extension: xx2 | Las extensiones por defecto de FoxBin2Prg terminan en '2' |
DontShowProgress: 0 | Obsoleto. Ahora se usa la opción ShowProgressbar desde la v1.19.40 |
ShowProgressbar: 1 | 1=Mostrar siembre la barra de progreso, 2=Mostrarla solamente cuando se procesan múltiples-archivos, 0=No mostrar la barra de progreso |
DontShowErrors: 0 | Mostrar mensajes de error por defecto |
NoTimestamps: 1 | Vaciar Timestamps por defecto para minimizar diferencias |
Debug: 0 | No Activar <archivo>.Log por defecto |
ExtraBackupLevels: 1 | Por defecto 1 BAK es creado. Con esto puede crear más .N.BAK, o ninguno |
ClearUniqueID: 1 | 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge |
OptimizeByFilestamp: 0 | Optimizar la regeneración de archivos dependiendo del timestamp de archivo (no conviene si se usa de forma bidireccional) |
AllowMultiConfig: 1 | 1=Permitir configuración CFG por directorio. Si no se encuentra CFG, se usa el principal. 0=Solo usar CFG Principal |
DropNullCharsFromCode: 1 | 1=Quitar NULLs del código fuente / 0=Dejar los NULLs en el código |
XXX_Conversion_Support: N | 0=Sin soporte, 1=Generar solo TXT (Diff), 2=Generar TXT y BIN (Merge), 4=Generar TXT con DATOS para DIFF (DBF solamente) |
PJX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
VCX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
SCX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
FRX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
LBX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
MNX_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
DBC_Conversion_Support: 2 | El valor por defecto es 2 - Soporte bidireccional activado (tx2 y bin) |
DBF_Conversion_Support: 1 | El valor por defecto es 1 - Solo el soporte tx2 activado. El soporte para regenerar la estructura de los DBFs está desactivada por defecto para no sobreescribir los datos accidentalmente. Cuando se activa el soporte bidireccional (2), tenga presente que los Datos no son restaurados, solo las estructuras y los índices!. Usar con cuidado. |
UseClassPerFile: 0 | 0=Una archivo librería tx2, 1=Múltiples archivo.clase.tx2 |
RedirectClassPerFileToMain: 0 | 0=No redireccionar a archivo.tx2, 1=Redireccionar a archivo.tx2 cuando se seleccione archivo.clase.tx2 |
ClassPerFileCheck: 0 | 0=No verificar la inclusión de archivo.clase.tx2, 1=Verificar la inclusión de archivo.clase.tx2 |
ClearDBFLastUpdate: 1 | 0=Mantener DBF LastUpdate, , 1=Borrar DBF LastUpdate. Util para Diff, minimiza diferencias. |
Language: (auto) | Lenguaje usado para los mensajes y LOGs. EN=English, FR=French, ES=Español, DE=German, No definido = AUTOMATICO [DEFAULT] (Usando VERSION(3)) |
Artículos sobre FoxBin2Prg
> FoxBin2Prg, el sucesor mejorado del SccText> FoxBin2Prg: Guía rápida de uso y configuración
> FoxBin2Prg: Detalle de vistas, datos de uso, configuraciones y más
Artículos sobre uso de FoxBin2Prg con herramientas SCM
> Control de versiones: ¿Para qué sirve? ¿Por qué es necesario)> Control de código fuente: Terminología común que hay que conocer
> Cómo configurar las Herramientas de VFP 9 en Plastic
> Instalación de PlasticSCM paso a paso
> PlasticSCM: Cómo crear una rama para comenzar a trabajar
> PlasticSCM: Hice un checkin erróneo de un archivo nuevo, ¿cómo lo arreglo?
> FoxPro 9: Creando un componente y añadiéndolo al control de código PlasticSCM
> FoxPro 9: Modificando un componente que ya está bajo control de código
> FoxPro 9 y PlasticSCM: Cómo deshacer un changeset sin borrarlo
> PlasticSCM: Agregando un proyecto FoxPro 9 al control de código fuente
> PlasticSCM: Cómo trabajar en FoxPro 9 con ramas por tarea
> PlasticSCM: ¿Qué es el Diff?
> PlasticSCM: ¿Qué es el Merge?
> PlasticSCM: Qué es el Cherry Pick y cómo se usa
> PlasticSCM: ¡Houston, tenemos problemas!
> PlasticSCM: El merge sustractivo como reemplazo del borrado
> PlasticSCM: ¿Qué es el Shelve?
> PlasticSCM: ¿Para qué sirve el anotate?
> PlasticSCM: Opciones de conectividad, transporte del código fuente y backup
> PlasticSCM: Sincronización con GitHub
> PlasticSCM: ¿Qué es nivelar una rama?
> PlasticSCM: Opciones de búsqueda y visualización de ramas y changesets
> PlasticSCM: PlasticSCM: Cómo configurar la replicación de repositorios Plastic locales y remotos