38209 FoxBin2Prg

38236
vfpxreleasesmall.png Última Release de FoxBin2prg (Deacarga)

Creador y Administrador del Proyecto: Fernando D. Bozzo - Blog con más información sobre FoxBin2Prg

Donate!

¡Gracias por su soporte!


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


scctextx-vs-FoxBin2Prg_scx_ES.png


scctextx-vs-FoxBin2Prg_mnx_ES.png



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
FOXBIN2PRG.EXE "<path>\file.sc2" Regenera el binario
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>\file.vcx::cus_client" Regenera solo la versión Texto de la clase individual cus_client del archivo file.vcx (con UseClassPerFile:1 o 2)
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
DO FOXBIN2PRG.PRG WITH "<path>\file.sc2" Regenera el binario
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
DO FOXBIN2PRG.PRG WITH "<path>\file.vcx::cus_client" Genera solo la versión Texto de la clase individual cus_client del archivo file.vcx (con UseClassPerFile:1 o 2)




Usando la versión "Objeto":

*-- Instanciando directamente desde el EXE (lo más rápido, solo el EXE hace falta)
LOCAL loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
SET PROCEDURE TO "<Path>\FOXBIN2PRG.EXE"
loCnv = CREATEOBJECT("c_foxbin2prg")
loCnv.execute( <params> )

-o de esta forma también-

*-- Instanciando desde el PRG (también requerirá varios archivos más, como los 27 props*.txt)
LOCAL loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
loCnv = NEWOBJECT("c_foxbin2prg", "<path>\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") separándolas con "-", 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+Nombrearchivo del archivo a convertir o Ruta+Nombrearchivo::Nombreclase de la clase a convertir a texto con UseClassPerFile:1 o 2. En modo de compatibilidad con VSS puede recibir una letra de tipo cType para consultar el tipo de soporte
cType (v? IN ) Para compatibilidad con VSS, indica el tipo de archivo (d=DBC, D=DBF, K=Form, B=Label, M=Menu, R=Report, V=Class) -o- indica algunas opciones combinables separadas por "-" => "BIN2PRG-PRG2BIN-INTERACTIVE-SHOWMSG" -o- puede ser un "*" (solo cuando cInputFile es un PJX/PJ2) lo cual indica que todos los archivos del proyecto deben ser procesados
cTextName (v? IN ) Para compatibilidad con VSS, es el nombre del archivo de Texto a generar
lGenText (v? IN ) Para compatibilidad con VSS, .T.=Generar Texto, .F.=Generar Binario. Nota: cType tiene prioridad sobre lGenText
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
oModulo (@? OUT) Uso interno para Unit Testing
oEx (@? OUT) Objeto Exception
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)
cBackupLevels (v? IN ) Número de niveles de backups para archivos convertidos. '0'=Sin Backup, por defecto es '1' .bak
cClearUniqueID (v? IN ) '1' para vaciar los UniqueIDs de los tx2 (por defecto), '0' para no vaciarlos
cOptimizeByFilestamp (v? IN ) '1' para no regenerar el archivo destino cuando su timestamp es mayor que el del archivo origen. Por defecto es '0' (desactivado)
cCFG_File (v? IN ) Permite indicar un CFG de un directorio particular



Nota: Por favor, lea los archivos README.txt y FoxBin2Prg.cfg.txt 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


vfpxreleasesmall.png Última Release de FoxBin2prg

38236

Last edited Jul 17 at 2:58 PM by fdbozzo, version 61

Comments

ceau Jan 8, 2014 at 4:14 PM 
Felicidades Fernando. Ahora entiendo porque todavía no deseo dejar totalmente VisualFox, ya que en este lenguaje se puede hacer de todo! Con otros lenguajes no tengo los comandos que requiero o son limitados. Me encanta la mezcla de VisualFox y PHP para hacer una aplicación Web. VisualFox is Alive !