From 220b1d0d8dae95dd6ee8556125769c08925759ff Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 17 Jun 2014 20:40:12 +0200 Subject: [PATCH 01/23] Changeset: 302 fdbozzo - 17/06/2014 19:49:20: --- foxbin2prg.prg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e8facfb..e2e1b2d 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -88,6 +88,7 @@ * 27/05/2014 FDBOZZO v1.19.23 Arreglo bug vcx/scx: Redimensionamiento incorrecto de imagenes en ciertas situaciones (props_image.txt y props_optiongroup.txt actualizados) * 09/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: La falta de AGAIN en algunos comandos USE provoca error de "tabla en uso" si se usa el PRG desde la ventana de comandos * 14/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la línea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del código +* 17/06/2014 FDBOZZO v1.19.25 Mejora: Si durante la generación de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Pedro Gutiérrez M.) * * *--------------------------------------------------------------------------------------------------- @@ -120,6 +121,7 @@ * 27/05/2014 Kenny Vermassen REPORTE DE BUG img v1.19.22: La propiedad Stretch no estaba incluida en la lista de propiedades props_image.txt, lo que provocaba un mal redimensionamiento de las imagenes en ciertas situaciones (Arreglado en v1.19.23) * 09/06/2014 Matt Slay REPORTE BUG vcx/scx v1.19.23: La falta de AGAIN en algunos comandos USE provoca error de "tabla en uso" si se usa el PRG desde la ventana de comandos (Arreglado en v1.19.24) * 13/06/2014 Mario Peschke REPORTE BUG vcx/scx v1.19.23: Los campos de tabla con nombre "text" a veces provocan corrupción del binario generado (Arreglado en v1.19.24) +* 17/06/2014 Pedro Gutiérrez M. MEJORA v1.19.24: Si durante la generación de binarios o de textos se producen errores, mostrar un mensaje avisando de ello (Agregado en v1.19.25) * * *--------------------------------------------------------------------------------------------------- From 299b9d65e0736ac5a0a3f36208f1b7f7d1e11998 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 17 Jun 2014 21:56:09 +0200 Subject: [PATCH 02/23] Changeset: 303 fdbozzo - 17/06/2014 20:40:40: --- foxbin2prg.prg | 730 +++++++++++++++++++++++++------------------------ 1 file changed, 366 insertions(+), 364 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e8facfb..38d3825 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -129,7 +129,7 @@ * _memberdata Se separan las definiciones en lineas para evitar una sola muy larga * *--------------------------------------------------------------------------------------------------- -* PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) +* PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_InputFile (v! IN ) Nombre completo (fullpath) del archivo a convertir * tcType (v? IN ) Tipo de archivo de entrada. SIN USO. Compatibilidad con SCCTEXT.PRG // Si se indica "*" y tc_InputFile es un PJX, se procesa todo el proyecto * tcTextName (v? IN ) Nombre del archivo texto. Compatibilidad con SCCTEXT.PRG @@ -144,7 +144,7 @@ * se hace desde el directorio del archivo, con lo que las referencias relativas pueden * generar errores de compilación, típicamente los #include. * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar -* tcNoTimestamps ( ) Sin uso. Utilizar el archivo de configuración. +* tcNoTimestamps (v? IN ) Indica si se debe anular el timestamp ('1') o no ('0' ó vacío) * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- @@ -696,7 +696,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE doBackup *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toEx (@? IN ) Objeto Exception con información del error * tlRelanzarError (v? IN ) Indica si se debe relanzar el error * tcBakFile_1 (@? OUT) Nombre del archivo backup 1 (vcx,scx,pjx,frx,lbx,dbf,dbc,mnx,vc2,sc2,pj2,etc) @@ -1030,17 +1030,17 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE ejecutar *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tc_InputFile (!v IN ) Nombre del archivo de entrada + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tc_InputFile (v! IN ) Nombre del archivo de entrada * tcType (v? IN ) Tipo de archivo de entrada. SIN USO. Compatibilidad con SCCTEXT.PRG // Si se indica "*" y tc_InputFile es un PJX, se procesa todo el proyecto * tcTextName (v? IN ) Nombre del archivo texto. Compatibilidad con SCCTEXT.PRG * tlGenText (v? IN ) .T.=Genera Texto, .F.=Genera Binario. Compatibilidad con SCCTEXT.PRG - * tcDontShowErrors (?v IN ) '1' para no mostrar mensajes de error (MESSAGEBOX) - * tcDebug (?v IN ) '1' para habilitar modo debug (SOLO DESARROLLO) - * tcDontShowProgress (?v IN ) '1' para inhabilitar la barra de progreso - * toModulo (?@ OUT) Referencia de objeto del módulo generado (para Unit Testing) - * toEx (?@ OUT) Objeto con información del error - * tlRelanzarError (?v IN ) Indica si el error debe relanzarse o no + * tcDontShowErrors (v? IN ) '1' para no mostrar mensajes de error (MESSAGEBOX) + * tcDebug (v? IN ) '1' para habilitar modo debug (SOLO DESARROLLO) + * tcDontShowProgress (v? IN ) '1' para inhabilitar la barra de progreso + * toModulo (@? OUT) Referencia de objeto del módulo generado (para Unit Testing) + * toEx (@? OUT) Objeto con información del error + * tlRelanzarError (v? IN ) Indica si el error debe relanzarse o no * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) * tcRecompile (v? IN ) Indica recompilar ('1') el binario una vez regenerado. [Cambio de funcionamiento por defecto] @@ -1048,8 +1048,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * se hace desde el directorio del archivo, con lo que las referencias relativas pueden * generar errores de compilación, típicamente los #include. * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar - * tcNoTimestamps ( ) Sin uso. Utilizar el archivo de configuración. + * tcNoTimestamps (v? IN ) Indica si se debe anular el timestamp ('1') o no ('0' ó vacío) * tcBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1') + * tcClearUniqueID (v? IN ) Indica si se debe limpiar el UniqueID ('1') o no ('0' ó vacío) + * tcOptimizeByFilestamp (v? IN ) Indica si se debe optimizar por filestamp ('1') o no ('0' ó vacío) *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ; @@ -1385,11 +1387,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE Convertir *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tc_InputFile (!v IN ) Nombre del archivo de entrada - * toModulo (?@ OUT) Referencia de objeto del módulo generado (para Unit Testing) - * toEx (?@ OUT) Objeto con información del error - * tlRelanzarError (?v IN ) Indica si el error debe relanzarse o no + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tc_InputFile (v! IN ) Nombre del archivo de entrada + * toModulo (@? OUT) Referencia de objeto del módulo generado (para Unit Testing) + * toEx (@? OUT) Objeto con información del error + * tlRelanzarError (v? IN ) Indica si el error debe relanzarse o no * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) *-------------------------------------------------------------------------------------------------------------- @@ -1698,8 +1700,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE getNext_BAK *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tc_OutputFilename (!v IN ) Nombre del archivo de salida a crear el backup + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tc_OutputFilename (v! IN ) Nombre del archivo de salida a crear el backup *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcOutputFileName LOCAL lcNext_Bak, I @@ -2046,16 +2048,16 @@ DEFINE CLASS c_conversor_base AS SESSION * Este es un valor especial * *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcPropName (!v IN ) Nombre de la propiedad - * tcValue (!v IN ) Valor (o inicio del valor) de la propiedad + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcPropName (v! IN ) Nombre de la propiedad + * tcValue (v! IN ) Valor (o inicio del valor) de la propiedad * taProps (!@ IN ) El array con las líneas del código donde buscar * tnProp_Count (!@ IN ) Cantidad de líneas de código * I (!@ IN ) Línea actualmente evaluada - * tcTAG_I (!v IN ) TAG de inicio - * tcTAG_F (!v IN ) TAG de fin - * tnLEN_TAG_I (!v IN ) Longitud del tag de inicio - * tnLEN_TAG_F (!v IN ) Longitud del tag de fin + * tcTAG_I (v! IN ) TAG de inicio + * tcTAG_F (v! IN ) TAG de fin + * tnLEN_TAG_I (v! IN ) Longitud del tag de inicio + * tnLEN_TAG_F (v! IN ) Longitud del tag de fin *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcPropName, tcValue, taProps, tnProp_Count, I, tcTAG_I, tcTAG_F, tnLEN_TAG_I, tnLEN_TAG_F EXTERNAL ARRAY taProps @@ -2199,9 +2201,9 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase correspondiente con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -2215,8 +2217,8 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE decode_SpecialCodes_1_31 *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcText (@! IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcText (!@ IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) *--------------------------------------------------------------------------------------------------- LPARAMETERS tcText LOCAL I @@ -2365,7 +2367,7 @@ DEFINE CLASS c_conversor_base AS SESSION FUNCTION GetTimeStamp *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tnTimeStamp (v! IN ) Timestamp en formato numérico *--------------------------------------------------------------------------------------------------- LPARAMETERS tnTimeStamp @@ -2437,8 +2439,8 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE get_SeparatedLineAndComment *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Línea a separar del comentario + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Línea a separar del comentario * tcComment (@? OUT) Comentario *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, tcComment @@ -2459,12 +2461,12 @@ DEFINE CLASS c_conversor_base AS SESSION *-- Devuelve el valor separado de la propiedad. *-- Si se indican más de 3 parámetros, evalúa el valor completo a través de las líneas de código *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código * taBloquesExclusion (!@ IN ) Array con las posiciones de inicio/fin de los bloques de exclusion * tnBloquesExclusion (!@ IN ) Cantidad de bloques de exclusión - * toModulo (?@ OUT) Objeto con toda la información del módulo analizado + * toModulo (@? OUT) Objeto con toda la información del módulo analizado *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcAsignacion, tcPropName, tcValue, toClase, taCodeLines, tnCodeLines, I LOCAL ln_AT_Cmt @@ -2656,9 +2658,9 @@ DEFINE CLASS c_conversor_base AS SESSION ******************************************************************************************************************* PROCEDURE sortPropsAndValues_SetAndGetSCXPropNames *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcOperation (!v IN ) Operación a realizar ("SETNAME" o "GETNAME") - * tcPropName (!v IN ) Nombre de la propiedad + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcOperation (v! IN ) Operación a realizar ("SETNAME" o "GETNAME") + * tcPropName (v! IN ) Nombre de la propiedad *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcOperation, tcPropName @@ -2826,10 +2828,10 @@ DEFINE CLASS c_conversor_base AS SESSION * si se ordenan alfabéticamente en un ADD OBJECT. Pierde "picture" y otras más. * Pareciera que la última debe ser "Name". *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taPropsAndValues (!@ IN ) El array con las propiedades y valores del objeto o clase - * tnPropsAndValues_Count (!v IN ) Cantidad de propiedades - * tnSortType (!v IN ) Tipo de sort: + * tnPropsAndValues_Count (v! IN ) Cantidad de propiedades + * tnSortType (v! IN ) Tipo de sort: * 0=Solo separar propiedades de clase y de objetos (.) * 1=Sort completo de propiedades (para la versión TEXTO) * 2=Sort completo de propiedades con "Name" al final (para la versión BIN) @@ -3148,9 +3150,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase correspondiente con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -3209,10 +3211,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *< FileMetadata: Type="V" Cpid="1252" Timestamp="1131901580" ID="1129207528" ObjRev="544" /> *< OLE: Nombre="frm_form.Pageframe1.Page1.Cnt_controles_h.Olecontrol1" Parent="frm_form.Pageframe1.Page1.Cnt_controles_h" ObjName="Olecontrol1" Checksum="1685567300" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPg...ADAP7AAAA==" /> *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLineWithMetadata (@! IN ) Línea con metadatos y un tag de metadatos - * taPropsAndValues (@! OUT) Array a devolver con las propiedades y valores encontrados - * tnPropsAndValues_Count (@! OUT) Cantidad de propiedades encontradas + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLineWithMetadata (!@ IN ) Línea con metadatos y un tag de metadatos + * taPropsAndValues (!@ OUT) Array a devolver con las propiedades y valores encontrados + * tnPropsAndValues_Count (!@ OUT) Cantidad de propiedades encontradas * tcLeftTag (v! IN ) TAG de inicio de los metadatos * tcRightTag (v! IN ) TAG de fin de los metadatos *-------------------------------------------------------------------------------------------------------------- @@ -3301,12 +3303,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base * LOS BLOQUES DE EXCLUSIÓN SON AQUELLOS QUE TIENEN TEXT/ENDTEXT OF #IF .F./#ENDIF Y SE USAN PARA NO BUSCAR * INSTRUCCIONES COMO "DEFINE CLASS" O "PROCEDURE" EN LOS MISMOS. *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código de texto donde buscar - * tnCodeLines (?@ IN ) Cantidad de líneas de código - * ta_ID_Bloques (?@ IN ) Array de pares de identificadores (2 cols). Ej: '#IF .F.','#ENDI' ; 'TEXT','ENDTEXT' ; etc - * taBloquesExclusion (?@ OUT) Array con las posiciones de los bloques (2 cols). Ej: 3,14 ; 23,58 ; etc - * tnBloquesExclusion (?@ OUT) Cantidad de bloques de exclusión + * tnCodeLines (@? IN ) Cantidad de líneas de código + * ta_ID_Bloques (@? IN ) Array de pares de identificadores (2 cols). Ej: '#IF .F.','#ENDI' ; 'TEXT','ENDTEXT' ; etc + * taBloquesExclusion (@? OUT) Array con las posiciones de los bloques (2 cols). Ej: 3,14 ; 23,58 ; etc + * tnBloquesExclusion (@? OUT) Cantidad de bloques de exclusión *-------------------------------------------------------------------------------------------------------------- EXTERNAL ARRAY ta_ID_Bloques, taBloquesExclusion @@ -4055,7 +4057,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE defined_PAM2Memo *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toClase (!@ IN ) Objeto de la Clase *-------------------------------------------------------------------------------------------------------------- LPARAMETERS toClase @@ -4495,7 +4497,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-------------------------------------------------------------------------------------------------------------- * 07/01/2014 FDBOZZO Los *métodos deben ir siempre al final, si no los eventos ACCESS no se ejecutan! *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toClase (!@ IN ) Objeto de la Clase * tcLine (!@ IN ) Línea de datos en evaluación * taCodeLines (!@ IN ) El array con las líneas del código de texto donde buscar @@ -5140,12 +5142,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE identificarBloquesDeCodigo *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código * taBloquesExclusion (!@ IN ) Array con las posiciones de inicio/fin de los bloques de exclusion * tnBloquesExclusion (!@ IN ) Cantidad de bloques de exclusión - * toModulo (?@ OUT) Objeto con toda la información del módulo analizado + * toModulo (@? OUT) Objeto con toda la información del módulo analizado * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. @@ -5242,9 +5244,9 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -5546,9 +5548,9 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -5854,9 +5856,9 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toProject (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toProject (!@ OUT) Objeto generado de clase CL_PROJECT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toProject, toEx AS EXCEPTION, toFoxBin2Prg @@ -6037,12 +6039,12 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin PROCEDURE identificarBloquesDeCodigo LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toProject *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código * taBloquesExclusion (!@ IN ) Array con las posiciones de inicio/fin de los bloques de exclusion * tnBloquesExclusion (!@ IN ) Cantidad de bloques de exclusión - * toProject (?@ OUT) Objeto con toda la información del proyecto analizado + * toProject (@? OUT) Objeto con toda la información del proyecto analizado * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. @@ -6640,9 +6642,9 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toReport (@! OUT) Objeto generado de clase CL_REPORT con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toReport (!@ OUT) Objeto generado de clase CL_REPORT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toReport, toEx AS EXCEPTION, toFoxBin2Prg @@ -6791,12 +6793,12 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin PROCEDURE identificarBloquesDeCodigo LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código - * taBloquesExclusion (?@ IN ) Sin uso - * tnBloquesExclusion (?@ IN ) Sin uso - * toReport (?@ OUT) Objeto con toda la información del reporte analizado + * taBloquesExclusion (@? IN ) Sin uso + * tnBloquesExclusion (@? IN ) Sin uso + * toReport (@? OUT) Objeto con toda la información del reporte analizado * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. @@ -7068,9 +7070,9 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toTable (@! OUT) Objeto generado de clase CL_TABLE con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toTable (!@ OUT) Objeto generado de clase CL_TABLE con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toTable, toEx AS EXCEPTION, toFoxBin2Prg @@ -7274,12 +7276,12 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE identificarBloquesDeCodigo *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código - * taBloquesExclusion (?@ IN ) Sin uso - * tnBloquesExclusion (?@ IN ) Sin uso - * toTable (?@ OUT) Objeto con toda la información de la tabla analizada + * taBloquesExclusion (@? IN ) Sin uso + * tnBloquesExclusion (@? IN ) Sin uso + * toTable (@? OUT) Objeto con toda la información de la tabla analizada *-------------------------------------------------------------------------------------------------------------- LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toTable EXTERNAL ARRAY taCodeLines, taBloquesExclusion @@ -7352,9 +7354,9 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toDatabase (!@ OUT) Objeto generado de clase CL_DBC con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg @@ -7447,12 +7449,12 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE identificarBloquesDeCodigo *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código - * taBloquesExclusion (?@ IN ) Sin uso - * tnBloquesExclusion (?@ IN ) Sin uso - * toDatabase (?@ OUT) Objeto con toda la información de la base de datos analizada + * taBloquesExclusion (@? IN ) Sin uso + * tnBloquesExclusion (@? IN ) Sin uso + * toDatabase (@? OUT) Objeto con toda la información de la base de datos analizada * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. @@ -7527,9 +7529,9 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toMenu (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toMenu (!@ OUT) Objeto generado de clase CL_DBC con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg @@ -7581,12 +7583,12 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin PROCEDURE identificarBloquesDeCodigo *-------------------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código - * taBloquesExclusion (?@ IN ) Sin uso - * tnBloquesExclusion (?@ IN ) Sin uso - * toMenu (?@ OUT) Objeto con toda la información del menú analizado + * taBloquesExclusion (@? IN ) Sin uso + * tnBloquesExclusion (@? IN ) Sin uso + * toMenu (@? OUT) Objeto con toda la información del menú analizado * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. @@ -7643,8 +7645,8 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin PROCEDURE escribirArchivoBin *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toMenu (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toMenu (!@ OUT) Objeto generado de clase CL_DBC con la información leida del texto *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu @@ -7733,9 +7735,9 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase correspondiente con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -7822,11 +7824,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base PROCEDURE get_PropsAndCommentsFrom_RESERVED3 *-- Sirve para el memo RESERVED3 *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcMemo (v! IN ) Contenido de un campo MEMO * tlSort (v? IN ) Indica si se deben ordenar alfabéticamente los nombres - * taPropsAndComments (@! OUT) Array con las propiedades y comentarios - * tnPropsAndComments_Count (@! OUT) Cantidad de propiedades + * taPropsAndComments (!@ OUT) Array con las propiedades y comentarios + * tnPropsAndComments_Count (!@ OUT) Cantidad de propiedades * tcSortedMemo (@? OUT) Contenido del campo memo ordenado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcMemo, tlSort, taPropsAndComments, tnPropsAndComments_Count, tcSortedMemo @@ -7881,11 +7883,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base * los objetos contenidos, causa un error. Se deben ordenar primero las * props.nativas (sin punto) y luego las de los objetos (con punto) *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcMemo (v! IN ) Contenido de un campo MEMO * tnSort (v? IN ) Indica si se deben ordenar alfabéticamente los objetos y props (1), o no (0) - * taPropsAndValues (@! OUT) Array con las propiedades y comentarios - * tnPropsAndValues_Count (@! OUT) Cantidad de propiedades + * taPropsAndValues (!@ OUT) Array con las propiedades y comentarios + * tnPropsAndValues_Count (!@ OUT) Cantidad de propiedades * tcSortedMemo (@? OUT) Contenido del campo memo ordenado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcMemo, tnSort, taPropsAndValues, tnPropsAndValues_Count, tcSortedMemo @@ -7987,11 +7989,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base PROCEDURE get_PropsFrom_PROTECTED *-- Sirve para el memo PROTECTED *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcMemo (v! IN ) Contenido de un campo MEMO * tlSort (v? IN ) Indica si se deben ordenar alfabéticamente los nombres - * taProtected (@! OUT) Array con las propiedades y comentarios - * tnProtected_Count (@! OUT) Cantidad de propiedades + * taProtected (!@ OUT) Array con las propiedades y comentarios + * tnProtected_Count (!@ OUT) Cantidad de propiedades * tcSortedMemo (@? OUT) Contenido del campo memo ordenado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcMemo, tlSort, taProtected, tnProtected_Count, tcSortedMemo @@ -9347,9 +9349,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -9567,9 +9569,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -9806,9 +9808,9 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_PROJECT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -10148,9 +10150,9 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_PROJECT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -10534,9 +10536,9 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_PROJECT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -10698,9 +10700,9 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toModulo (@! OUT) Contenido del texto generado - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Contenido del texto generado + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg @@ -10819,9 +10821,9 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toDatabase (!@ OUT) Objeto generado de clase CL_DBC con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg @@ -10896,9 +10898,9 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * totoMenu (@! OUT) Objeto generado de clase CL_MENU con la información leida del texto - * toEx (@! OUT) Objeto con información del error + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * totoMenu (!@ OUT) Objeto generado de clase CL_MENU con la información leida del texto + * toEx (!@ OUT) Objeto con información del error * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg @@ -11010,9 +11012,9 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM PROCEDURE set_Line *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado * I (v! IN ) Número de línea en análisis *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I @@ -11022,8 +11024,8 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM PROCEDURE get_SeparatedLineAndComment *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Línea a separar del comentario + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Línea a separar del comentario * tcComment (@? OUT) Comentario *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, tcComment @@ -11083,9 +11085,9 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION PROCEDURE set_Line *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado * I (v! IN ) Número de línea en análisis *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I @@ -11095,8 +11097,8 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION PROCEDURE get_SeparatedLineAndComment *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Línea a separar del comentario + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Línea a separar del comentario * tcComment (@? OUT) Comentario *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, tcComment @@ -11115,7 +11117,7 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taArray (@? OUT) Array de conexiones * tnArray_Count (@? OUT) Cantidad de conexiones *--------------------------------------------------------------------------------------------------- @@ -11816,9 +11818,9 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_OutputFile (v! IN ) Nombre del archivo de salida - * tnLastID (@! IN ) Último número de ID usado + * tnLastID (!@ IN ) Último número de ID usado * tnParentID (v! IN ) ID del objeto Padre *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_OutputFile, tnLastID, tnParentID @@ -11877,7 +11879,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE FUNCTION add_Property *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcPropertyName (v! IN ) Nombre de la propiedad a agregar o modificar * teValue (v! IN ) Valor de la propiedad *--------------------------------------------------------------------------------------------------- @@ -11932,11 +11934,11 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE analizarBloque_Comment *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -11969,11 +11971,11 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE getAllPropertiesFromObjectname *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcName (v! IN ) Nombre del objeto * tcType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation) - * taProperties (@! OUT) Array con las propiedades encontradas y sus valores - * tnProperty_Count (@! OUT) Cantidad de propiedades encontradas + * taProperties (!@ OUT) Array con las propiedades encontradas y sus valores + * tnProperty_Count (!@ OUT) Cantidad de propiedades encontradas *--------------------------------------------------------------------------------------------------- LPARAMETERS tcName, tcType, taProperties, tnProperty_Count @@ -12091,7 +12093,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE getDBCPropertyIDByName *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcPropertyName (v! IN ) Nombre de la propiedad * tlRethrowError (v? IN ) Indica si se debe relanzar el error o solo devolver -1 *--------------------------------------------------------------------------------------------------- @@ -12244,7 +12246,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE getDBCPropertyNameByID *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcPropertyID (v! IN ) Nombre de la propiedad * tlRethrowError (v? IN ) Indica si se debe relanzar el error o solo devolver -1 *--------------------------------------------------------------------------------------------------- @@ -12396,7 +12398,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE getDBCPropertyValueTypeByPropertyID *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tnPropertyID (v! IN ) ID de la Propiedad *--------------------------------------------------------------------------------------------------- LPARAMETERS tnPropertyID @@ -12428,7 +12430,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE DBGETPROP *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcName (v! IN ) Nombre del objeto * tcType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation) * tcProperty (v! IN ) Nombre de la propiedad @@ -12541,7 +12543,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE DBSETPROP *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcName (v! IN ) Nombre del objeto * tcType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation) * tcProperty (v! IN ) Nombre de la propiedad @@ -12555,7 +12557,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE getBinPropertyDataRecord LPARAMETERS teData, tnPropertyID *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * teData (v! IN ) Dato a codificar * tnPropertyID (v! IN ) ID de la propiedad a la que pertenece *--------------------------------------------------------------------------------------------------- @@ -12676,9 +12678,9 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_OutputFile (v! IN ) Nombre del archivo de salida - * tnLastID (@! IN ) Último número de ID usado + * tnLastID (!@ IN ) Último número de ID usado * tnParentID (v! IN ) ID del objeto Padre *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_OutputFile, tnLastID, tnParentID @@ -12779,11 +12781,11 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -12861,11 +12863,11 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE PROCEDURE analizarBloque_SP *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -12894,9 +12896,9 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_OutputFile (v! IN ) Nombre del archivo de salida - * tnLastID (@! IN ) Último número de ID usado + * tnLastID (!@ IN ) Último número de ID usado * tnParentID (v! IN ) ID del objeto Padre *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_OutputFile, tnLastID, tnParentID @@ -13054,11 +13056,11 @@ DEFINE CLASS CL_DBC_CONNECTIONS AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13121,7 +13123,7 @@ DEFINE CLASS CL_DBC_CONNECTIONS AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taConnections (@? OUT) Array de conexiones * tnConnection_Count (@? OUT) Cantidad de conexiones *--------------------------------------------------------------------------------------------------- @@ -13227,11 +13229,11 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13286,7 +13288,7 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcConnection (v! IN ) Nombre de la Conexión *--------------------------------------------------------------------------------------------------- LPARAMETERS tcConnection @@ -13371,11 +13373,11 @@ DEFINE CLASS CL_DBC_TABLES AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13435,7 +13437,7 @@ DEFINE CLASS CL_DBC_TABLES AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taTables (@? OUT) Array de conexiones * lnTable_Count (@? OUT) Cantidad de conexiones *--------------------------------------------------------------------------------------------------- @@ -13544,11 +13546,11 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13623,7 +13625,7 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcTable (v! IN ) Nombre de la Tabla *--------------------------------------------------------------------------------------------------- LPARAMETERS tcTable @@ -13685,9 +13687,9 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_OutputFile (v! IN ) Nombre del archivo de salida - * tnLastID (@! IN ) Último número de ID usado + * tnLastID (!@ IN ) Último número de ID usado * tnParentID (v! IN ) ID del objeto Padre *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_OutputFile, tnLastID, tnParentID @@ -13735,11 +13737,11 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_DBC_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13799,7 +13801,7 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_DBC_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcTable (v! IN ) Nombre de la Tabla *--------------------------------------------------------------------------------------------------- LPARAMETERS tcTable @@ -13897,11 +13899,11 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -13956,7 +13958,7 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcTable (v! IN ) Nombre de la Tabla * tcField (v! IN ) Nombre del campo *--------------------------------------------------------------------------------------------------- @@ -14033,11 +14035,11 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_DBC_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14097,7 +14099,7 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_DBC_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcTable (v! IN ) Nombre de la Tabla *--------------------------------------------------------------------------------------------------- LPARAMETERS tcTable @@ -14181,11 +14183,11 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14240,7 +14242,7 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcIndex (v! IN ) Nombre del índice en la forma "tabla.indice" *--------------------------------------------------------------------------------------------------- LPARAMETERS tcIndex @@ -14308,11 +14310,11 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_DBC_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14372,7 +14374,7 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_DBC_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taViews (@? OUT) Array de vistas * tnView_Count (@? OUT) Cantidad de vistas *--------------------------------------------------------------------------------------------------- @@ -14518,11 +14520,11 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14600,7 +14602,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcView (v! IN ) Vista en evaluación *--------------------------------------------------------------------------------------------------- LPARAMETERS tcView @@ -14689,9 +14691,9 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_OutputFile (v! IN ) Nombre del archivo de salida - * tnLastID (@! IN ) Último número de ID usado + * tnLastID (!@ IN ) Último número de ID usado * tnParentID (v! IN ) ID del objeto Padre *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_OutputFile, tnLastID, tnParentID @@ -14760,11 +14762,11 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14825,7 +14827,7 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_DBC_COL_BASE ******************************************************************************************************************* PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcView (v! IN ) Nombre de la Vista *--------------------------------------------------------------------------------------------------- LPARAMETERS tcView @@ -14931,11 +14933,11 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_DBC_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -14991,7 +14993,7 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcView (v! IN ) Nombre de la Vista * tcField (v! IN ) Nombre del campo *--------------------------------------------------------------------------------------------------- @@ -15072,11 +15074,11 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_DBC_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15136,7 +15138,7 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_DBC_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcTable (v! IN ) Tabla de la que obtener las relaciones * taRelations (@? OUT) Array de relaciones * tnRelation_Count (@? OUT) Cantidad de relaciones @@ -15224,11 +15226,11 @@ DEFINE CLASS CL_DBC_RELATION AS CL_DBC_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15280,9 +15282,9 @@ DEFINE CLASS CL_DBC_RELATION AS CL_DBC_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * taRelations (@! IN ) Array de relaciones - * I (@! IN ) Número de relación evaluado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * taRelations (!@ IN ) Array de relaciones + * I (!@ IN ) Número de relación evaluado *--------------------------------------------------------------------------------------------------- LPARAMETERS taRelations, I @@ -15389,11 +15391,11 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15460,7 +15462,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_FileTypeDesc (v! IN ) Tipo de archivo (en Hex) * tl_FileHasCDX (v! IN ) Indica si el archivo tiene CDX asociado * tl_FileHasMemo (v! IN ) Indica si el archivo tiene MEMO (FPT) asociado @@ -15532,11 +15534,11 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15597,7 +15599,7 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taFields (@? OUT) Array de información de campos * tnField_Count (@? OUT) Cantidad de campos *--------------------------------------------------------------------------------------------------- @@ -15702,11 +15704,11 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15758,9 +15760,9 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * taFields (@! IN ) Array de información de campos - * I (@! IN ) Campo en evaluación + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * taFields (!@ IN ) Array de información de campos + * I (!@ IN ) Campo en evaluación *--------------------------------------------------------------------------------------------------- LPARAMETERS taFields, I @@ -15819,11 +15821,11 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -15883,7 +15885,7 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taTagInfo (@? OUT) Array de información de indices * tnTagInfo_Count (@? OUT) Cantidad de índices * tc_InputFile (v! IN ) Archivo de entrada (el DBF) @@ -15968,11 +15970,11 @@ DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines @@ -16024,7 +16026,7 @@ DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taTagInfo (@? IN ) Array de información de indices * I (@? IN ) Indice en evaluación *--------------------------------------------------------------------------------------------------- @@ -16460,7 +16462,7 @@ DEFINE CLASS CL_MENU_COL_BASE AS CL_COL_BASE PROCEDURE get_DataFromTablabin *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toReg (v! IN ) Objeto de datos del registro * toCol_LastLevelName (v! IN ) Objeto collection con la pila de niveles analizados *--------------------------------------------------------------------------------------------------- @@ -16569,7 +16571,7 @@ DEFINE CLASS CL_MENU_COL_BASE AS CL_COL_BASE PROCEDURE updateMENU *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS toConversor @@ -16578,10 +16580,10 @@ DEFINE CLASS CL_MENU_COL_BASE AS CL_COL_BASE PROCEDURE AnalizarSiExpresionEsComandoOProcedimiento *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tcExpr (v! IN ) Expresión a analizar (puede ser una línea o un Procedure) - * tcProcName (@! OUT) Nombre del Procedimiento, si se encuentra uno - * tcProcCode (@! OUT) Código del Procedimiento, si se encuentra uno + * tcProcName (!@ OUT) Nombre del Procedimiento, si se encuentra uno + * tcProcCode (!@ OUT) Código del Procedimiento, si se encuentra uno * tcSourceCode (@? IN ) Si se indica, se buscará el nombre de Procedure para obtener su código * tnIndentation (v? IN ) En caso de devolver código, indica si se debe indentar o quitar indentación * tlAddProcEndproc (v? IN ) En caso de devolver código, indica si se debe encerrar con PROCEDURE/ENDPROC @@ -16694,11 +16696,11 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -16796,11 +16798,11 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE analizarBloque_SetupCode *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -16850,11 +16852,11 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE analizarBloque_CleanupCode *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -16904,11 +16906,11 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE analizarBloque_MenuCode *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -17067,11 +17069,11 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE analizarBloque_PROCEDURE *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -17120,7 +17122,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) *--------------------------------------------------------------------------------------------------- TRY @@ -17272,7 +17274,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE get_DataFromTablabin *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) *--------------------------------------------------------------------------------------------------- LOCAL loReg, loCol_LastLevelName AS COLLECTION STORE NULL TO loReg, loCol_LastLevelName @@ -17287,7 +17289,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE updateMENU *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS toConversor @@ -17316,7 +17318,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE PROCEDURE UpdateMenu_Recursivo *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toObj (v! IN ) Referencia del objeto CL_MENU_BARPOP o CL_MENU_OPTION * tnNivel (v! IN ) Nivel de indentación (solo para debug) * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos @@ -17406,11 +17408,11 @@ DEFINE CLASS CL_MENU_BARPOP AS CL_MENU_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -17534,10 +17536,10 @@ DEFINE CLASS CL_MENU_BARPOP AS CL_MENU_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toParentReg (v! IN ) Objeto registro Padre * tnNivel (v! IN ) Nivel para indentar - * tcEndProcedures (@! OUT) Agregar aquí los procedimientos que irán al final + * tcEndProcedures (!@ OUT) Agregar aquí los procedimientos que irán al final * toHeader (v! IN ) Objeto Registro de cabecera del menu *--------------------------------------------------------------------------------------------------- LPARAMETERS toParentReg, tnNivel, tcEndProcedures, toHeader @@ -17647,11 +17649,11 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -17755,11 +17757,11 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE analizarBloque_DefinePAD *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -17938,11 +17940,11 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE analizarBloque_DefineBAR *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) - * tcLine (@! IN/OUT) Contenido de la línea en análisis - * taCodeLines (@! IN ) Array de líneas del programa analizado - * I (@! IN/OUT) Número de línea en análisis - * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcLine (!@ IN/OUT) Contenido de la línea en análisis + * taCodeLines (!@ IN ) Array de líneas del programa analizado + * I (!@ IN/OUT) Número de línea en análisis + * tnCodeLines (!@ IN ) Cantidad de líneas del programa analizado * toConversor (v! IN ) Referencia al conversor para poder usar sus métodos *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines, toConversor @@ -18135,10 +18137,10 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toParentReg (v? IN ) Objeto registro Padre * tnNivel (v? IN ) Nivel para indentar - * tcEndProcedures (@! OUT) Agregar aquí los procedimientos que irán al final + * tcEndProcedures (!@ OUT) Agregar aquí los procedimientos que irán al final * toHeader (v! IN ) Objeto Registro de cabecera del menu *--------------------------------------------------------------------------------------------------- LPARAMETERS toParentReg, tnNivel, tcEndProcedures, toHeader @@ -18231,7 +18233,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE get_DefineBarText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toReg (v? IN ) Objeto registro * toBarPop (v? IN ) Bar o Popup hijo * tnNivel (v? IN ) Nivel para indentar @@ -18320,7 +18322,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE PROCEDURE get_DefinePadText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toReg (v? IN ) Objeto registro * toBarPop (v? IN ) Bar o Popup hijo * tnNivel (v? IN ) Nivel para indentar @@ -18483,7 +18485,7 @@ DEFINE CLASS CL_DBF_UTILS AS SESSION PROCEDURE getDBFmetadata *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_FileName (v! IN ) Nombre del DBF a analizar * tn_HexFileType (@? OUT) Tipo de archivo en hexadecimal (Está detallado en la ayuda de Fox) * tl_FileHasCDX (@? OUT) Indica si el archivo tiene CDX asociado @@ -18599,7 +18601,7 @@ DEFINE CLASS CL_DBF_UTILS AS SESSION PROCEDURE fileTypeDescription *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tn_HexFileType (@? IN ) Tipo de archivo en hexadecimal (Está detallado en la ayuda de Fox) *--------------------------------------------------------------------------------------------------- LPARAMETERS tn_HexFileType @@ -18640,7 +18642,7 @@ DEFINE CLASS CL_DBF_UTILS AS SESSION PROCEDURE getCodePageInfo *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tnHexCodePage (v! IN ) Código de página en hexadecimal (Está detallado en la ayuda de Fox) * tnCodePage (@? OUT) Código de página normal * tcDescrip (@? OUT) Descripción del código de página @@ -18769,7 +18771,7 @@ DEFINE CLASS CL_DBF_UTILS AS SESSION PROCEDURE toText *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) *--------------------------------------------------------------------------------------------------- LOCAL lcText, loField AS CL_DBF_UTILS_FIELD OF 'FOXBIN2PRG.PRG' lcText = '' @@ -18823,7 +18825,7 @@ DEFINE CLASS CL_DBF_UTILS AS SESSION PROCEDURE write_DBC_BackLink *--------------------------------------------------------------------------------------------------- - * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_FileName (v! IN ) Nombre del DBF a analizar * tcDBC_Name (v! IN ) Nombre del DBC a asociar * tdLastUpdate (v! IN ) Fecha de última actualización From 3ac38abf7673210a799b1407e1d2694a2896c698 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 17 Jun 2014 23:43:43 +0200 Subject: [PATCH 03/23] Changeset: 304 fdbozzo - 17/06/2014 21:56:22: --- foxbin2prg.prg | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e2e1b2d..574c8b0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -409,6 +409,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM _MEMBERDATA = [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -440,6 +441,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -469,6 +471,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] @@ -492,6 +495,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM n_ExisteCapitalizacion = -1 l_ConfigEvaluated = .F. l_Debug = .F. + l_Error = .F. + c_ErrorLog = '' l_Test = .F. l_ShowErrors = .T. l_ShowProgress = .T. @@ -1347,10 +1352,17 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDWITH && THIS CATCH TO toEx - lnCodError = toEx.ERRORNO - lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile + lnCodError = toEx.ERRORNO + THIS.l_Error = .T. + lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) + *-- Escribo la información de error en la variable log de errores + THIS.writeErrorLog( TTOC(DATETIME(),3) + ' ' + REPLICATE('-', 80) ) + THIS.writeErrorLog( lcErrorInfo ) + THIS.writeErrorLog( ) + + *-- Escribo la información de error en el archivo log de errores TRY STRTOFILE( lcErrorInfo, EVL(tc_InputFile,'foxbin2prg') + '.ERR' ) CATCH TO loEx2 @@ -1822,6 +1834,17 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + ******************************************************************************************************************* + PROCEDURE writeErrorLog + LPARAMETERS tcText + + TRY + THIS.c_ErrorLog = THIS.c_ErrorLog + EVL(tcText,'') + CR_LF + CATCH + ENDTRY + ENDPROC + + ******************************************************************************************************************* PROCEDURE writeLog LPARAMETERS tcText From 00a6c431dd96d96e101726f08ee4b4cf0d653a9c Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 17 Jun 2014 23:56:23 +0200 Subject: [PATCH 04/23] Changeset: 306 fdbozzo - 17/06/2014 23:51:22: --- foxbin2prg.prg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e8facfb..1776939 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -88,6 +88,7 @@ * 27/05/2014 FDBOZZO v1.19.23 Arreglo bug vcx/scx: Redimensionamiento incorrecto de imagenes en ciertas situaciones (props_image.txt y props_optiongroup.txt actualizados) * 09/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: La falta de AGAIN en algunos comandos USE provoca error de "tabla en uso" si se usa el PRG desde la ventana de comandos * 14/06/2014 FDBOZZO v1.19.24 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la línea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del código +* 16/06/2014 FDBOZZO v1.19.25 Mejora: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del principal (Mario Peschke) * * *--------------------------------------------------------------------------------------------------- @@ -120,6 +121,7 @@ * 27/05/2014 Kenny Vermassen REPORTE DE BUG img v1.19.22: La propiedad Stretch no estaba incluida en la lista de propiedades props_image.txt, lo que provocaba un mal redimensionamiento de las imagenes en ciertas situaciones (Arreglado en v1.19.23) * 09/06/2014 Matt Slay REPORTE BUG vcx/scx v1.19.23: La falta de AGAIN en algunos comandos USE provoca error de "tabla en uso" si se usa el PRG desde la ventana de comandos (Arreglado en v1.19.24) * 13/06/2014 Mario Peschke REPORTE BUG vcx/scx v1.19.23: Los campos de tabla con nombre "text" a veces provocan corrupción del binario generado (Arreglado en v1.19.24) +* 16/06/2014 Mario Peschke MEJORA v1.19.24: Agregado soporte de configuraciones (CFG) por directorio que, si existen, se usan en lugar del CFG principal (Agregado en v1.19.25) * * *--------------------------------------------------------------------------------------------------- From 227690d0d215253e61dcef13cb42aac0eab0427e Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 21 Jun 2014 14:58:19 +0200 Subject: [PATCH 05/23] Changeset: 310 fdbozzo - 18/06/2014 19:33:53: --- TESTS/ut__foxbin2prg.prg | 12 +- ...rg__c_foxbin2prg__EvaluarConfiguracion.prg | 245 +++++++--- foxbin2prg.prg | 440 ++++++++++++++++-- 3 files changed, 592 insertions(+), 105 deletions(-) diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index 9bb4e21..7e069c4 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -358,7 +358,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaElReporte_FB2P_LBX_YValidarLosCamposDelRegistro *-- ETIQUETAS (LBX) LOCAL lnCodError, lnCodError_Esperado ; - , lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario, lnRecno ; + , lc_File, lc_InputFile, lc_OutputFile, lc_OutputFile2, lcParent, lcClass, lcObjName, loReg_Esperado, loReg, lcTipoBinario, lnRecno ; , loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ; , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -380,17 +380,17 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError lc_File = 'FB2P_FOXUSER.LBX' - lc_InputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosReadOnly ) - lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) + lc_InputFile = FULLPATH( FORCEPATH( lc_File, oFXU_LIB.cPathDatosReadOnly ) ) + lc_OutputFile = FULLPATH( FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) ) + lc_OutputFile2 = FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) loCnv.EvaluarConfiguracion( '1', '1', '0', '0', SYS(5)+CURDIR(), '1', '0', '0' ) - *oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, 'LBX' ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, 'LBT' ) ) - loCnv.Convertir( lc_OutputFile, .F., .F., .T. ) - loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. ) + loCnv.Ejecutar( lc_OutputFile, '', '', '', '1', '0', '1', '', '', .T. ) + loCnv.Ejecutar( lc_OutputFile2, '', '', '', '1', '0', '1', '', '', .T. ) SELECT 0 USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIVOBIN_IN diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg index 21570d6..3f40d79 100644 --- a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg +++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg @@ -153,7 +153,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P_Esperado = CREATEOBJECT("EMPTY") loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -206,7 +206,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P_Esperado = CREATEOBJECT("EMPTY") loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -276,7 +276,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P_Esperado = CREATEOBJECT("EMPTY") loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -344,7 +344,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -382,7 +382,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg') STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg.BAK') @@ -421,7 +421,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -459,7 +459,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') STRTOFILE('ExtraBackupLevels:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') @@ -498,7 +498,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -536,7 +536,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') STRTOFILE('ExtraBackupLevels:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') @@ -575,7 +575,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg') STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') @@ -615,7 +615,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg') STRTOFILE('ExtraBackupLevels:2', 'TESTS\DATOS_TEST\foxbin2prg.cfg.bak') @@ -653,7 +653,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. @@ -690,7 +690,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('Debug:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -728,7 +728,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('Debug:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -766,7 +766,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. @@ -803,7 +803,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('NoTimestamps:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -841,7 +841,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('NoTimestamps:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -879,7 +879,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. @@ -916,7 +916,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ClearUniqueID:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -954,7 +954,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('ClearUniqueID:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -992,7 +992,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. @@ -1029,7 +1029,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('DontShowProgress:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1067,7 +1067,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. STRTOFILE('DontShowProgress:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1105,7 +1105,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1141,7 +1141,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('DontShowErrors:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1178,7 +1178,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('DontShowErrors:1', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1216,7 +1216,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1253,7 +1253,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:db2=dba', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1291,7 +1291,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1328,7 +1328,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:dc2=dca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1366,7 +1366,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1403,7 +1403,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:fr2=fra', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1441,7 +1441,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1478,7 +1478,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:lb2=lba', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1516,7 +1516,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1553,7 +1553,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:mn2=mna', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1591,7 +1591,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1628,7 +1628,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:pj2=pja', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1666,7 +1666,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1703,7 +1703,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:sc2=sca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1741,7 +1741,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1778,7 +1778,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('Extension:vc2=vca', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1816,7 +1816,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1853,7 +1853,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('DBF_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1891,7 +1891,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -1928,7 +1928,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('DBC_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -1966,7 +1966,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2003,7 +2003,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('PJX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2041,7 +2041,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2078,7 +2078,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('SCX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2116,7 +2116,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2153,7 +2153,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('VCX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2191,7 +2191,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2228,7 +2228,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('MNX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2266,7 +2266,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2303,7 +2303,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('FRX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2340,8 +2340,8 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O TRY loEx = NULL loFB2P = THIS.ioFB2P - loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.l_ShowErrors = .F. + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -2378,7 +2378,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O loEx = NULL loFB2P = THIS.ioFB2P loFB2P.l_ShowErrors = .F. - loFB2P.c_Foxbin2prg_ConfigFile = 'TESTS\DATOS_TEST\foxbin2prg.cfg' + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) STRTOFILE('LBX_Conversion_Support:0', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -2403,4 +2403,131 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_1_CuandoExistaElArhivo_foxbin2prg_cfg_Secundario + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor, lcCFG_File ; + , laCFG_CachedAccess(3), laCFG_CachedAccess_Esperado(3), I ; + , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.l_AllowMultiConfig = .T. + loFB2P.c_InputFile = FORCEPATH( 'test.vcx', oFXU_LIB.cPathDatosTest ) + lcCFG_File = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + STRTOFILE( 'LBX_Conversion_Support: 1', lcCFG_File ) + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 1 + laCFG_CachedAccess_Esperado(1) = .F. + laCFG_CachedAccess_Esperado(2) = .T. + laCFG_CachedAccess_Esperado(3) = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() && Carga config.Principal + + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(1) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(2) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(3) = loFB2P.get_l_CFG_CachedAccess() + + leValor = loFB2P.LBX_Conversion_Support + + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + THIS.messageout( 'Configuración Principal: ' + loFB2P.c_Foxbin2prg_ConfigFile ) + THIS.messageout( 'Configuración Secundaria: ' + lcCFG_File ) + FOR I = 1 TO ALEN(laCFG_CachedAccess_Esperado) + THIS.assertequals( laCFG_CachedAccess_Esperado(I), laCFG_CachedAccess(I), 'CONFIGURACIÓN CACHEADA EN ACCESO ' + TRANSFORM(I) ) + ENDFOR + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoNoHaya_CFG_Principal_Y_NoExista_CFG_Secundario_EnDirEvaluado + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor, lcCFG_File ; + , laCFG_CachedAccess(3), laCFG_CachedAccess_Esperado(3), I ; + , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.l_AllowMultiConfig = .T. + loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', ADDBS(oFXU_LIB.cPathDatosTest) + 'noexiste' ) + loFB2P.c_InputFile = FORCEPATH( 'test.vcx', oFXU_LIB.cPathDatosTest ) + lcCFG_File = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + STRTOFILE( 'LBX_Conversion_Support: 1', lcCFG_File ) + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 0 + laCFG_CachedAccess_Esperado(1) = .F. + laCFG_CachedAccess_Esperado(2) = .T. + laCFG_CachedAccess_Esperado(3) = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() && Carga config.Principal + + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(1) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(2) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.LBX_Conversion_Support = 0 + loFB2P.c_InputFile = FORCEPATH( 'test.vcx', ADDBS(oFXU_LIB.cPathDatosTest) + 'otro' ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(3) = loFB2P.get_l_CFG_CachedAccess() + + leValor = loFB2P.LBX_Conversion_Support + + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + THIS.messageout( 'Configuración Principal: ' + loFB2P.c_Foxbin2prg_ConfigFile ) + THIS.messageout( 'Configuración Secundaria: ' + lcCFG_File ) + + FOR I = 1 TO ALEN(laCFG_CachedAccess_Esperado) + THIS.messageout( 'Configuración cacheada en acceso ' + TRANSFORM(I) + ' esperada: ' + TRANSFORM( laCFG_CachedAccess_Esperado(I) ) ) + THIS.assertequals( laCFG_CachedAccess_Esperado(I), laCFG_CachedAccess(I), 'CONFIGURACIÓN CACHEADA EN ACCESO ' + TRANSFORM(I) ) + ENDFOR + + ENDTRY + + ENDFUNC + + ENDDEFINE diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1776939..1ca6110 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -431,15 +431,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -450,12 +454,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -474,6 +480,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] + PROTECTED l_ConfigEvaluated, n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 *-- @@ -490,11 +497,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM t_OutputFile_TimeStamp = {//::} lFileMode = .T. n_ExisteCapitalizacion = -1 + l_CFG_CachedAccess = .F. l_ConfigEvaluated = .F. l_Debug = .F. l_Test = .F. l_ShowErrors = .T. l_ShowProgress = .T. + l_AllowMultiConfig = .F. l_Recompile = .T. l_NoTimestamps = .T. l_ClearUniqueID = .F. @@ -502,11 +511,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias + l_Main_CFG_Loaded = .F. n_ExtraBackupLevels = 1 - nClassTimeStamp = '' + n_ClassTimeStamp = 0 + n_CFG_Actual = 0 o_Conversor = NULL o_Frm_Avance = NULL o_FSO = NULL + o_Configuration = NULL run_AfterCreateTable = '' run_AfterCreate_DB2 = '' c_VC2 = 'VC2' && VCX @@ -549,6 +561,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_Foxbin2prg_ConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) THIS.c_CurDir = SYS(5) + CURDIR() THIS.o_FSO = NEWOBJECT("Scripting.FileSystemObject") + THIS.o_Configuration = CREATEOBJECT("COLLECTION") ADDPROPERTY(_SCREEN, 'ExitCode', 0) RETURN ENDPROC @@ -559,9 +572,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcFileCDX lcFileCDX = FORCEPATH( "TABLABIN.CDX", JUSTPATH(THIS.c_InputFile) ) - *IF FILE( lcFileCDX ) ERASE ( lcFileCDX ) - *ENDIF THIS.writeLog_Flush() @@ -575,6 +586,227 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + FUNCTION get_l_CFG_CachedAccess + RETURN THIS.l_CFG_CachedAccess + ENDFUNC + + + PROCEDURE l_Debug_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_Debug + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_Debug, THIS.l_Debug ) + ENDIF + ENDPROC + + + PROCEDURE l_ShowErrors_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_ShowErrors + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_ShowErrors, THIS.l_ShowErrors ) + ENDIF + ENDPROC + + + PROCEDURE l_ShowProgress_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_ShowProgress + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_ShowProgress, THIS.l_ShowProgress ) + ENDIF + ENDPROC + + + PROCEDURE l_Recompile_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_Recompile + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_Recompile, THIS.l_Recompile ) + ENDIF + ENDPROC + + + PROCEDURE l_NoTimestamps_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_NoTimestamps + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_NoTimestamps, THIS.l_NoTimestamps ) + ENDIF + ENDPROC + + + PROCEDURE l_ClearUniqueID_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_ClearUniqueID + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_ClearUniqueID, THIS.l_ClearUniqueID ) + ENDIF + ENDPROC + + + PROCEDURE l_OptimizeByFilestamp_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_OptimizeByFilestamp + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_OptimizeByFilestamp, THIS.l_OptimizeByFilestamp ) + ENDIF + ENDPROC + + + PROCEDURE n_ExtraBackupLevels_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.n_ExtraBackupLevels + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).n_ExtraBackupLevels, THIS.n_ExtraBackupLevels ) + ENDIF + ENDPROC + + + PROCEDURE c_VC2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_VC2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_VC2, THIS.c_VC2 ) + ENDIF + ENDPROC + + + PROCEDURE c_SC2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_SC2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_SC2, THIS.c_SC2 ) + ENDIF + ENDPROC + + + PROCEDURE c_PJ2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_PJ2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_PJ2, THIS.c_PJ2 ) + ENDIF + ENDPROC + + + PROCEDURE c_FR2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_FR2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_FR2, THIS.c_FR2 ) + ENDIF + ENDPROC + + + PROCEDURE c_LB2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_LB2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_LB2, THIS.c_LB2 ) + ENDIF + ENDPROC + + + PROCEDURE c_DB2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_DB2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_DB2, THIS.c_DB2 ) + ENDIF + ENDPROC + + + PROCEDURE c_DC2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_DC2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_DC2, THIS.c_DC2 ) + ENDIF + ENDPROC + + + PROCEDURE c_MN2_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.c_MN2 + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).c_MN2, THIS.c_MN2 ) + ENDIF + ENDPROC + + + PROCEDURE PJX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.PJX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).PJX_Conversion_Support, THIS.PJX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE VCX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.VCX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).VCX_Conversion_Support, THIS.VCX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE SCX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.SCX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).SCX_Conversion_Support, THIS.SCX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE FRX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.FRX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).FRX_Conversion_Support, THIS.FRX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE LBX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.LBX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).LBX_Conversion_Support, THIS.LBX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE MNX_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.MNX_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).MNX_Conversion_Support, THIS.MNX_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE DBF_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.DBF_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).DBF_Conversion_Support, THIS.DBF_Conversion_Support ) + ENDIF + ENDPROC + + + PROCEDURE DBC_Conversion_Support_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.DBC_Conversion_Support + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).DBC_Conversion_Support, THIS.DBC_Conversion_Support ) + ENDIF + ENDPROC + + PROCEDURE ChangeFileAttribute * Using Win32 Functions in Visual FoxPro * example=103 @@ -795,18 +1027,48 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; , tcClearUniqueID, tcOptimizeByFilestamp - LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue + LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue ; + , lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; + , lo_Configuration AS Collection WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' - tcRecompile = EVL(tcRecompile,'1') + STORE 0 TO lnKey + tcRecompile = EVL(tcRecompile,'1') + lcConfigFile = .c_Foxbin2prg_ConfigFile + + IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded + IF EMPTY(.c_InputFile) + ERROR C_FILE_NOT_FOUND_LOC + ': .c_InputFile = "' + .c_InputFile + '"' + ENDIF + lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', JUSTPATH(.c_InputFile) ) + ENDIF + + lo_Configuration = .o_Configuration + .n_CFG_Actual = 0 + .l_CFG_CachedAccess = .F. + + IF .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 + .n_CFG_Actual = lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) + .l_CFG_CachedAccess = (.n_CFG_Actual > 0) + ENDIF - IF NOT .l_ConfigEvaluated - lcConfigFile = .c_Foxbin2prg_ConfigFile - llExisteConfig = FILE( lcConfigFile ) + *IF NOT .l_ConfigEvaluated + lo_CFG = THIS + + IF .n_CFG_Actual = 0 THEN + llExisteConfig = FILE( lcConfigFile ) + ENDIF - IF llExisteConfig + IF llExisteConfig AND .n_CFG_Actual = 0 .writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile ) + IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded + lo_CFG = CREATEOBJECT('CL_CFG') + lo_Configuration.Add( lo_CFG, UPPER( JUSTPATH( lcConfigFile ) ) ) + ELSE + lo_Configuration.Add( NULL, UPPER( JUSTPATH( lcConfigFile ) ) ) + ENDIF + FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) laConfig(I) = LOWER( laConfig(I) ) @@ -877,83 +1139,89 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .PJX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > PJX_Conversion_Support: ' + TRANSFORM(.PJX_Conversion_Support) ) + lo_CFG.PJX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > PJX_Conversion_Support: ' + TRANSFORM(lo_CFG.PJX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('VCX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .VCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > VCX_Conversion_Support: ' + TRANSFORM(.VCX_Conversion_Support) ) + lo_CFG.VCX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > VCX_Conversion_Support: ' + TRANSFORM(lo_CFG.VCX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('SCX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .SCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > SCX_Conversion_Support: ' + TRANSFORM(.SCX_Conversion_Support) ) + lo_CFG.SCX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > SCX_Conversion_Support: ' + TRANSFORM(lo_CFG.SCX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('FRX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .FRX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > FRX_Conversion_Support: ' + TRANSFORM(.FRX_Conversion_Support) ) + lo_CFG.FRX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > FRX_Conversion_Support: ' + TRANSFORM(lo_CFG.FRX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('LBX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .LBX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > LBX_Conversion_Support: ' + TRANSFORM(.LBX_Conversion_Support) ) + lo_CFG.LBX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > LBX_Conversion_Support: ' + TRANSFORM(lo_CFG.LBX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('MNX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .MNX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > MNX_Conversion_Support: ' + TRANSFORM(.MNX_Conversion_Support) ) + lo_CFG.MNX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > MNX_Conversion_Support: ' + TRANSFORM(lo_CFG.MNX_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('DBF_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .DBF_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(.DBF_Conversion_Support) ) + lo_CFG.DBF_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(lo_CFG.DBF_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 23 ) == LOWER('DBC_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN - .DBC_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBC_Conversion_Support: ' + TRANSFORM(.DBC_Conversion_Support) ) + lo_CFG.DBC_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBC_Conversion_Support: ' + TRANSFORM(lo_CFG.DBC_Conversion_Support) ) ENDIF ENDCASE ENDFOR - ENDIF + + IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 + .n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) + ENDIF + ENDIF && llExisteConfig IF INLIST( TRANSFORM(tcDontShowProgress), '0', '1' ) THEN - .l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') + lo_CFG.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') ENDIF IF NOT EMPTY(tcDontShowErrors) - .l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') + lo_CFG.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') + ENDIF + IF NOT .l_Main_CFG_Loaded + lo_CFG.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) ENDIF - .l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) IF INLIST( TRANSFORM(tcNoTimestamps), '0', '1' ) THEN - .l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0') + lo_CFG.l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0') ENDIF IF INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) THEN - .l_ClearUniqueID = NOT (TRANSFORM(tcClearUniqueID) == '0') + lo_CFG.l_ClearUniqueID = NOT (TRANSFORM(tcClearUniqueID) == '0') ENDIF IF INLIST( TRANSFORM(tcDebug), '0', '1' ) THEN - .l_Debug = (TRANSFORM(tcDebug)=='1') + lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1') ENDIF - tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( .n_ExtraBackupLevels ) ) - .n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) ) + tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) ) + lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) ) IF INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) THEN - .l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0') + lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0') ENDIF .writeLog( '---' ) @@ -965,8 +1233,24 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) + + lo_CFG = NULL + RELEASE lo_CFG + + *-- Si existe una configuración y es NULL, se usa la predeterminada + *IF .l_AllowMultiConfig AND .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN + IF .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN + .n_CFG_Actual = 0 + ENDIF + IF NOT llExisteConfig OR .n_CFG_Actual = 0 THEN + .l_CFG_CachedAccess = .T. && Es acceso cacheado porque usa config.por defecto sin archivo CFG + ENDIF + IF NOT .l_Main_CFG_Loaded THEN + .l_Main_CFG_Loaded = .T. + ENDIF + .l_ConfigEvaluated = .T. - ENDIF && .l_ConfigEvaluated + *ENDIF && .l_ConfigEvaluated ENDWITH && THIS RETURN @@ -1104,7 +1388,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE *-- Ejecución normal - *-- ARCHIVO DE CONFIGURACIÓN + *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; , @tcClearUniqueID, @tcOptimizeByFilestamp ) @@ -1378,7 +1662,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM STORE NULL TO THIS.o_Frm_Avance ENDIF CD (JUSTPATH(THIS.c_CurDir)) - *SET PATH TO (lcPath) ENDTRY RETURN lnCodError @@ -1414,6 +1697,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .c_InputFile = loFSO.GetAbsolutePathName( FORCEPATH( laDirFile(1,1), JUSTPATH(.c_InputFile) ) ) + *-- ARCHIVO DE CONFIGURACIÓN SECUNDARIO + .EvaluarConfiguracion() + IF NOT EMPTY(tcOriginalFileName) tcOriginalFileName = loFSO.GetAbsolutePathName( tcOriginalFileName ) ENDIF @@ -1985,7 +2271,7 @@ DEFINE CLASS c_conversor_base AS SESSION c_InputFile = '' c_OutputFile = '' lFileMode = .F. - nClassTimeStamp = '' + n_ClassTimeStamp = 0 n_FB2PRG_Version = 1.0 c_Foxbin2prg_FullPath = '' c_Type = '' @@ -2396,7 +2682,7 @@ DEFINE CLASS c_conversor_base AS SESSION EXIT ENDIF - tnTimeStamp = THIS.nClassTimeStamp + tnTimeStamp = THIS.n_ClassTimeStamp IF EMPTY(tnTimeStamp) EXIT @@ -18974,3 +19260,77 @@ DEFINE CLASS CL_DBF_UTILS_FIELD AS CUSTOM ENDDEFINE +DEFINE CLASS CL_CFG AS CUSTOM + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + #IF .F. + LOCAL THIS AS CL_CFG OF 'FOXBIN2PRG.PRG' + #ENDIF + + + *-- + c_Foxbin2prg_FullPath = '' + c_Foxbin2prg_ConfigFile = '' + c_CurDir = '' + l_Debug = NULL + l_ShowErrors = NULL + l_ShowProgress = NULL + l_Recompile = NULL + l_NoTimestamps = NULL + l_ClearUniqueID = NULL + l_OptimizeByFilestamp = NULL + n_ExtraBackupLevels = NULL + c_VC2 = NULL + c_SC2 = NULL + c_PJ2 = NULL + c_FR2 = NULL + c_LB2 = NULL + c_DB2 = NULL + c_DC2 = NULL + c_MN2 = NULL + PJX_Conversion_Support = NULL + VCX_Conversion_Support = NULL + SCX_Conversion_Support = NULL + FRX_Conversion_Support = NULL + LBX_Conversion_Support = NULL + MNX_Conversion_Support = NULL + DBF_Conversion_Support = NULL + DBC_Conversion_Support = NULL + + +ENDDEFINE + + From a08a23ba0a5e198de899ff1f6a4fe95a464c58cb Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:05:12 +0200 Subject: [PATCH 06/23] Changeset: 311 fdbozzo - 21/06/2014 14:58:19: --- ...rg__c_foxbin2prg__EvaluarConfiguracion.prg | 136 +++++++++++++++++- foxbin2prg.prg | 11 +- 2 files changed, 144 insertions(+), 3 deletions(-) diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg index 3f40d79..840eb8c 100644 --- a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg +++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg @@ -2465,7 +2465,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O ******************************************************************************************************************************************* - FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoNoHaya_CFG_Principal_Y_NoExista_CFG_Secundario_EnDirEvaluado + FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoNoHaya_CFG_Principal_Y_NoExista_CFG_Secundario_EnElDirEvaluado LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor, lcCFG_File ; , laCFG_CachedAccess(3), laCFG_CachedAccess_Esperado(3), I ; , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; @@ -2530,4 +2530,138 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoExista_CFG_Secundario_EnElDirEvaluado_Y_NoUsarValorCacheadoEnPrimerAcceso + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor, lcCFG_File ; + , laCFG_CachedAccess(3), laCFG_CachedAccess_Esperado(3), I ; + , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.l_AllowMultiConfig = .T. + lcCFG_File = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + STRTOFILE( 'LBX_Conversion_Support: 1', lcCFG_File ) + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 1 + laCFG_CachedAccess_Esperado(1) = .T. + laCFG_CachedAccess_Esperado(2) = .T. + laCFG_CachedAccess_Esperado(3) = .F. + + + *-- TEST + loFB2P.EvaluarConfiguracion() && Carga config.Principal + + loFB2P.c_InputFile = loFB2P.c_Foxbin2prg_ConfigFile + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(1) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.c_InputFile = FORCEPATH( 'test.vcx', ADDBS(oFXU_LIB.cPathDatosTest) + 'otro' ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(2) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.c_InputFile = FORCEPATH( 'test.vcx', oFXU_LIB.cPathDatosTest ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(3) = loFB2P.get_l_CFG_CachedAccess() + + leValor = loFB2P.LBX_Conversion_Support + + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + THIS.messageout( 'Configuración Principal: ' + loFB2P.c_Foxbin2prg_ConfigFile ) + THIS.messageout( 'Configuración Secundaria: ' + lcCFG_File ) + + FOR I = 1 TO ALEN(laCFG_CachedAccess_Esperado) + THIS.messageout( 'Configuración cacheada en acceso ' + TRANSFORM(I) + ' esperada: ' + TRANSFORM( laCFG_CachedAccess_Esperado(I) ) ) + THIS.assertequals( laCFG_CachedAccess_Esperado(I), laCFG_CachedAccess(I), 'CONFIGURACIÓN CACHEADA EN ACCESO ' + TRANSFORM(I) ) + ENDFOR + + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_SetearElSoporte_LBX_Como_0_CuandoExista_CFG_Secundario_EnElDirEvaluado_Y_UsarValorCacheadoDesdeSegundoAccesoConsecutivo + LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor, lcCFG_File ; + , laCFG_CachedAccess(3), laCFG_CachedAccess_Esperado(3), I ; + , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + loEx = NULL + loFB2P = THIS.ioFB2P + loFB2P.l_ShowErrors = .F. + loFB2P.l_AllowMultiConfig = .T. + *loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', ADDBS(oFXU_LIB.cPathDatosTest) + 'noexiste' ) + *loFB2P.c_InputFile = FORCEPATH( 'test.vcx', oFXU_LIB.cPathDatosTest ) + lcCFG_File = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + STRTOFILE( 'LBX_Conversion_Support: 1', lcCFG_File ) + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + lcSeteo = 'LBX_Conversion_Support:' + leValorEsperado = 1 + laCFG_CachedAccess_Esperado(1) = .T. + laCFG_CachedAccess_Esperado(2) = .F. + laCFG_CachedAccess_Esperado(3) = .T. + + + *-- TEST + loFB2P.EvaluarConfiguracion() && Carga config.Principal + + *loFB2P.c_InputFile = loFB2P.c_Foxbin2prg_ConfigFile + + loFB2P.c_InputFile = FORCEPATH( 'test1.vcx', ADDBS(oFXU_LIB.cPathDatosTest) + 'otro' ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(1) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.c_InputFile = FORCEPATH( 'test2.vcx', oFXU_LIB.cPathDatosTest ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(2) = loFB2P.get_l_CFG_CachedAccess() + + loFB2P.c_InputFile = FORCEPATH( 'test3.vcx', oFXU_LIB.cPathDatosTest ) + loFB2P.EvaluarConfiguracion() && Carga config.secundaria + laCFG_CachedAccess(3) = loFB2P.get_l_CFG_CachedAccess() + + leValor = loFB2P.LBX_Conversion_Support + + + + CATCH TO loEx + + FINALLY + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ) + + THIS.messageout( 'Configuración Principal: ' + loFB2P.c_Foxbin2prg_ConfigFile ) + THIS.messageout( 'Configuración Secundaria: ' + lcCFG_File ) + + FOR I = 1 TO ALEN(laCFG_CachedAccess_Esperado) + THIS.messageout( 'Configuración cacheada en acceso ' + TRANSFORM(I) + ' esperada: ' + TRANSFORM( laCFG_CachedAccess_Esperado(I) ) ) + THIS.assertequals( laCFG_CachedAccess_Esperado(I), laCFG_CachedAccess(I), 'CONFIGURACIÓN CACHEADA EN ACCESO ' + TRANSFORM(I) ) + ENDFOR + + ENDTRY + + ENDFUNC + + ENDDEFINE diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1ca6110..1d7362c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -503,11 +503,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_Test = .F. l_ShowErrors = .T. l_ShowProgress = .T. - l_AllowMultiConfig = .F. + l_AllowMultiConfig = .T. l_Recompile = .T. l_NoTimestamps = .T. l_ClearUniqueID = .F. - l_OptimizeByFilestamp = .T. + l_OptimizeByFilestamp = .F. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias @@ -1136,6 +1136,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 21 )) ) ) ENDIF + CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) + IF INLIST( lcValue, '0', '1' ) THEN + .l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 18 )) ) ) + ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) IF INLIST( lcValue, '0', '1', '2' ) THEN From 4d536f716e284872c7d8925196d089568de2a16b Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:06:36 +0200 Subject: [PATCH 07/23] =?UTF-8?q?Changeset:=20312=20fdbozzo=20-=2022/06/20?= =?UTF-8?q?14=2000:05:13:=20-=20Nueva=20configuraci=C3=B3n=20y=20valores?= =?UTF-8?q?=20por=20defecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.cfg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.cfg b/foxbin2prg.cfg index 19b5a6f..0040927 100644 --- a/foxbin2prg.cfg +++ b/foxbin2prg.cfg @@ -14,7 +14,8 @@ * Debug: 0 && Don't Activate individual .Log by default / No Activar .Log por defecto * ExtraBackupLevels: 0 && By default 1 BAK is created. With this you can make more .N.BAK, or none / Por defecto 1 BAK es creado. Con esto puede crear más .N.BAK, o ninguno * ClearUniqueID: 0 && EXPERIMENTAL! - 0=Keep UniqueID, 1=Clear Unique ID. Useful for Diff and Merge / 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge -* OptimizeByFilestamp: 1 && Optimize file regeneration depending on file timestamp / Optimizar la regeneración de archivos dependiendo del timestamp de archivo +* OptimizeByFilestamp: 0 && Optimize file regeneration depending on file timestamp / Optimizar la regeneración de archivos dependiendo del timestamp de archivo +* AllowMultiConfig: 1 && 1=Allow CFG files per directory. if no CFG found, then use Main CFG. 0=Only use Main CFG * XXX_Conversion_Support: N && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) * PJX_Conversion_Support: 2 && Default value * VCX_Conversion_Support: 2 && Default value @@ -54,8 +55,9 @@ *NoTimestamps: 1 *Debug: 1 *ExtraBackupLevels: 3 -ClearUniqueID: 1 +*ClearUniqueID: 1 *OptimizeByFilestamp: 0 +*AllowMultiConfig: 0 * EN: Uncomment to activate the new value, comment to deactivate and use the default From 93af5bba1e9a9dbcce3dfa6d2b66abc7541adb44 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:13:16 +0200 Subject: [PATCH 08/23] Changeset: 313 fdbozzo - 22/06/2014 00:12:54: - Cambiado valor por defecto de ClearUniqueID a True --- foxbin2prg.prg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 38d3825..94719c3 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -495,7 +495,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowProgress = .T. l_Recompile = .T. l_NoTimestamps = .T. - l_ClearUniqueID = .F. + l_ClearUniqueID = .T. l_OptimizeByFilestamp = .T. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias From 12b9e396532ade67e98b52c4df579b4a94ccbff3 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:15:01 +0200 Subject: [PATCH 09/23] Changeset: 314 fdbozzo - 22/06/2014 00:13:16: - Cambiado valor por defecto de OptimizeByFilestamp a False --- foxbin2prg.prg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 94719c3..88baaa6 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -496,7 +496,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_Recompile = .T. l_NoTimestamps = .T. l_ClearUniqueID = .T. - l_OptimizeByFilestamp = .T. + l_OptimizeByFilestamp = .F. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias From 04f4d9ee6ac57d050299d824f3a1f3de1ca31b62 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:15:26 +0200 Subject: [PATCH 10/23] Changeset: 315 fdbozzo - 22/06/2014 00:15:09: --- foxbin2prg.prg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1d7362c..a0d850b 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -507,7 +507,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_Recompile = .T. l_NoTimestamps = .T. l_ClearUniqueID = .F. - l_OptimizeByFilestamp = .F. + l_OptimizeByFilestamp = .T. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias From ce720bc033d13dcb0e95e0009cad7b5049900adc Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 00:17:52 +0200 Subject: [PATCH 11/23] =?UTF-8?q?Changeset:=20316=20fdbozzo=20-=2022/06/20?= =?UTF-8?q?14=2000:17:04:=20-=20Normalizaci=C3=B3n=20de=20propiedad=20n=5F?= =?UTF-8?q?ClassTimeStamp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 88baaa6..a4eec50 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -501,7 +501,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias n_ExtraBackupLevels = 1 - nClassTimeStamp = '' + n_ClassTimeStamp = 0 o_Conversor = NULL o_Frm_Avance = NULL o_FSO = NULL @@ -1985,7 +1985,7 @@ DEFINE CLASS c_conversor_base AS SESSION c_InputFile = '' c_OutputFile = '' lFileMode = .F. - nClassTimeStamp = '' + n_ClassTimeStamp = 0 n_FB2PRG_Version = 1.0 c_Foxbin2prg_FullPath = '' c_Type = '' @@ -2396,7 +2396,7 @@ DEFINE CLASS c_conversor_base AS SESSION EXIT ENDIF - tnTimeStamp = THIS.nClassTimeStamp + tnTimeStamp = THIS.n_ClassTimeStamp IF EMPTY(tnTimeStamp) EXIT From 0a54817a6ddab590e1e534a2d7fc0c9c39eca798 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 19:02:15 +0200 Subject: [PATCH 12/23] =?UTF-8?q?Changeset:=20317=20fdbozzo=20-=2022/06/20?= =?UTF-8?q?14=2017:29:20:=20-=20Agregada=20la=20comprobaci=C3=B3n=20de=20s?= =?UTF-8?q?i=20se=20ejecut=C3=B3=20EvaluarConfiguracion()=20externamente,?= =?UTF-8?q?=20para=20no=20ejecutar=20la=20primera=20otra=20vez?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index a0d850b..70a30fc 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -432,6 +432,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -586,6 +587,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + FUNCTION get_l_ConfigEvaluated + RETURN THIS.l_ConfigEvaluated + ENDFUNC + + FUNCTION get_l_CFG_CachedAccess RETURN THIS.l_CFG_CachedAccess ENDFUNC @@ -1396,8 +1402,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Ejecución normal *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL - .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; - , @tcClearUniqueID, @tcOptimizeByFilestamp ) + IF NOT THIS.l_ConfigEvaluated THEN + .EvaluarConfiguracion( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ; + , @tcClearUniqueID, @tcOptimizeByFilestamp ) + ENDIF IF .l_ShowProgress .cargar_frm_avance() From fd6b5bcdadbb978bae58ad0ca802b7ed7113714b Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 20:02:29 +0200 Subject: [PATCH 13/23] Changeset: 321 fdbozzo - 22/06/2014 19:54:04: --- TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg | 16 ++++++++-------- TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg | 8 ++++---- TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg | 3 +++ ...n2prg__c_foxbin2prg__EvaluarConfiguracion.prg | 8 ++++---- foxbin2prg.prg | 7 ++++--- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg index 3b245ad..2c243a5 100644 --- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg +++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbc.prg @@ -102,27 +102,27 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbc AS FxuTestCase OF FxuTestCase *-- DATOS DE ENTRADA - STORE 0 TO lnCodError + STORE 0 TO lnCodError, lnCodError_Esperado lc_File = 'FB2P_DBC.DBC' - lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) - lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) + lc_InputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosReadOnly ) + lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) oFXU_LIB.copiarArchivosParaTest( FORCEEXT(lc_File,'*') ) oFXU_LIB.copiarArchivosParaTest( 'EVENTSFILE.PRG' ) *-- Genero el DC2 - loCnv.Ejecutar( FORCEEXT(lc_File,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Regenero el DBC - loCnv.Ejecutar( FORCEEXT(lc_File,'DC2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DC2'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Renombro el DC2 a DC3 (ORIGINAL) RENAME (FORCEEXT(lc_OutputFile,'DC2')) TO (FORCEEXT(lc_OutputFile,'DC3')) *-- Genero el DC2 desde el DBC regenerado *WAIT WINDOW TIMEOUT 2 && Para forzar una diferencia de 2 segundos entre el DC2 y el DC3 - loCnv.Ejecutar( FORCEEXT(lc_File,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) + loCnv.Ejecutar( FORCEEXT(lc_OutputFile,'DBC'), '', '', '', '1', '0', '1',.F.,.F.,.T. ) *-- Comparo los DC2 y DC3 - lcDC2 = STREXTRACT( FILETOSTR( FORCEEXT(lc_File,'DC2') ), '', '' ) - lcDC3 = STREXTRACT( FILETOSTR( FORCEEXT(lc_File,'DC3') ), '', '' ) + lcDC2 = STREXTRACT( FILETOSTR( FORCEEXT(lc_OutputFile,'DC2') ), '', '' ) + lcDC3 = STREXTRACT( FILETOSTR( FORCEEXT(lc_OutputFile,'DC3') ), '', '' ) *-- Visualización de valores diff --git a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg index 0e8e61d..2bdc3b1 100644 --- a/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg +++ b/TESTS/ft__foxbin2prg__c_conversor_prg_a_dbf.prg @@ -102,7 +102,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase *-- DATOS DE ENTRADA - STORE 0 TO lnCodError + STORE 0 TO lnCodError, lnCodError_Esperado lc_File = 'FB2P_FREE.DB2' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) @@ -174,7 +174,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase *-- DATOS DE ENTRADA - STORE 0 TO lnCodError + STORE 0 TO lnCodError, lnCodError_Esperado lc_File = 'FB2P_FREE.DB2' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) @@ -247,7 +247,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase *-- DATOS DE ENTRADA - STORE 0 TO lnCodError + STORE 0 TO lnCodError, lnCodError_Esperado lc_File = 'FB2P_FREE.DB2' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) @@ -320,7 +320,7 @@ DEFINE CLASS ft__foxbin2prg__c_conversor_prg_a_dbf AS FxuTestCase OF FxuTestCase *-- DATOS DE ENTRADA - STORE 0 TO lnCodError + STORE 0 TO lnCodError, lnCodError_Esperado lc_File = 'FB2P_FREE.DB2' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) diff --git a/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg b/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg index bde0bd7..7d56aba 100644 --- a/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg +++ b/TESTS/fxu_lib_objetos_y_funciones_de_soporte.prg @@ -88,6 +88,9 @@ DEFINE CLASS CL_FXU_CONFIG AS CUSTOM THIS.cPath = THIS.cPath + ';FOXUNIT' ENDIF + THIS.cPathDatosReadOnly = ADDBS( SYS(5) + CURDIR() ) + THIS.cPathDatosReadOnly + THIS.cPathDatosTest = ADDBS( SYS(5) + CURDIR() ) + THIS.cPathDatosTest + SET PATH TO (THIS.cPath) ENDPROC diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg index 840eb8c..9152d58 100644 --- a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg +++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg @@ -171,10 +171,10 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O ADDPROPERTY( loFB2P_Esperado, 'l_ShowErrors', .T. ) ADDPROPERTY( loFB2P_Esperado, 'l_Recompile', .T. ) ADDPROPERTY( loFB2P_Esperado, 'l_NoTimestamps', .T. ) - ADDPROPERTY( loFB2P_Esperado, 'l_ClearUniqueID', .F. ) + ADDPROPERTY( loFB2P_Esperado, 'l_ClearUniqueID', .T. ) ADDPROPERTY( loFB2P_Esperado, 'l_Debug', .F. ) ADDPROPERTY( loFB2P_Esperado, 'n_ExtraBackupLevels', 1 ) - ADDPROPERTY( loFB2P_Esperado, 'l_OptimizeByFilestamp', .T. ) + ADDPROPERTY( loFB2P_Esperado, 'l_OptimizeByFilestamp', .F. ) *STRTOFILE('', 'TESTS\DATOS_TEST\foxbin2prg.cfg') @@ -868,7 +868,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O ******************************************************************************************************************************************* - FUNCTION Deberia_Setear_ClearUniqueID_False_CuandoNoExistaElArhivo_foxbin2prg_cfg + FUNCTION Deberia_Setear_ClearUniqueID_True_CuandoNoExistaElArhivo_foxbin2prg_cfg LOCAL lnCodError, lnCodError_Esperado, lcSeteo, leValorEsperado, leValor ; , loFB2P AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; , loEx AS EXCEPTION @@ -886,7 +886,7 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O *-- DATOS DE ENTRADA STORE 0 TO lnCodError lcSeteo = 'l_ClearUniqueID' - leValorEsperado = .F. + leValorEsperado = .T. *-- TEST diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 70a30fc..bd620af 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -507,8 +507,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_AllowMultiConfig = .T. l_Recompile = .T. l_NoTimestamps = .T. - l_ClearUniqueID = .F. - l_OptimizeByFilestamp = .T. + l_ClearUniqueID = .T. + l_OptimizeByFilestamp = .F. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias @@ -1385,7 +1385,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET ESCAPE OFF ENDIF - loFSO = .o_FSO + loFSO = .o_FSO + tcRecompile = EVL(tcRecompile,'1') DO CASE CASE VERSION(5) < 900 From 70d196631232e86d7b72f481c31f2d3992241ab6 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 20:08:29 +0200 Subject: [PATCH 14/23] Changeset: 323 fdbozzo - 22/06/2014 20:07:10: - Scripts vbs adaptados para mostrar los errores --- Convert_VFP9_BIN_2_PRG.vbs | 14 +++++++++++--- Convert_VFP9_PRG_2_BIN.vbs | 14 +++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index 26a7fb0..4dcf1be 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -14,7 +14,7 @@ Const ForReading = 1 Dim WSHShell, FileSystemObject Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count -Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cNoTimestamps +Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") Set FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject") Set oVFP9 = CreateObject("VisualFoxPro.Application.9") @@ -112,11 +112,19 @@ Else oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.HIDE()" ) oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance = NULL" ) - oVFP9.DoCmd( "oFoxBin2prg = NULL" ) If GetBit(nDebug, 4) Then - MsgBox "End of Process!", 64, WScript.ScriptName + If oVFP9.Eval("oFoxBin2prg.l_Error") Then + MsgBox "End of Process! (with errors)", 48, WScript.ScriptName + cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") + oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + WSHShell.run cErrFile + Else + MsgBox "End of Process!", 64, WScript.ScriptName + End If End If + + oVFP9.DoCmd( "oFoxBin2prg = NULL" ) End If WScript.Quit(nExitCode) diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 434efbf..111dbdd 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -14,7 +14,7 @@ Const ForReading = 1 Dim WSHShell, FileSystemObject Dim oVFP9, nExitCode, cEXETool, cCMD, nDebug, lcExt, foxbin2prg_cfg, aFiles(), nFile_Count -Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cNoTimestamps +Dim i, x, str_cfg, aConf, cErrMsg, cFlagGenerateLog, cFlagDontShowErrMsg, cFlagJustShowCall, cFlagRecompile, cNoTimestamps, cErrFile Set WSHShell = WScript.CreateObject("WScript.Shell") Set FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject") Set oVFP9 = CreateObject("VisualFoxPro.Application.9") @@ -119,11 +119,19 @@ Else oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.HIDE()" ) oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance = NULL" ) - oVFP9.DoCmd( "oFoxBin2prg = NULL" ) If GetBit(nDebug, 4) Then - MsgBox "End of Process!", 64, WScript.ScriptName + If oVFP9.Eval("oFoxBin2prg.l_Error") Then + MsgBox "End of Process! (with errors)", 48, WScript.ScriptName + cErrFile = oVFP9.Eval("FORCEPATH('FoxBin2Prg.LOG',GETENV('TEMP') )") + oVFP9.DoCmd("STRTOFILE( oFoxBin2prg.c_ErrorLog, '" & cErrFile & "' )") + WSHShell.run cErrFile + Else + MsgBox "End of Process!", 64, WScript.ScriptName + End If End If + + oVFP9.DoCmd( "oFoxBin2prg = NULL" ) End If WScript.Quit(nExitCode) From 6884ef7cd72d3862547477e72c59a8c5ae8dcc3c Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 22 Jun 2014 21:39:58 +0200 Subject: [PATCH 15/23] =?UTF-8?q?Changeset:=20325=20fdbozzo=20-=2022/06/20?= =?UTF-8?q?14=2020:53:17:=20-=20Arreglo=20de=20evaluaci=C3=B3n=20de=20sopo?= =?UTF-8?q?rte=20de=20tipo=20de=20archivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convert_VFP9_BIN_2_PRG.vbs | 4 ++-- Convert_VFP9_PRG_2_BIN.vbs | 4 ++-- foxbin2prg.exe | Bin 424765 -> 435821 bytes foxbin2prg.pj2 | 4 ++-- foxbin2prg.pjt | Bin 563190 -> 586482 bytes foxbin2prg.pjx | Bin 8993 -> 8993 bytes foxbin2prg.prg | 9 +++++---- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index 4dcf1be..00968b3 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -151,11 +151,11 @@ End Sub Private Sub evaluateFile( tcFile ) lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) oVFP9.SetVar "gc_Ext", lcExt - If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg(gc_Ext)") Then + 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg(gc_Ext)") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - End If + 'End If End Sub diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 111dbdd..b094e84 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -158,11 +158,11 @@ End Sub Private Sub evaluateFile( tcFile ) lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) oVFP9.SetVar "gc_Ext", lcExt - If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin(gc_Ext)") Then + 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin(gc_Ext)") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - End If + 'End If End Sub diff --git a/foxbin2prg.exe b/foxbin2prg.exe index f6c6442a6c5b33062d41510925fc1749a107b5c5..c496a77d5b7d0ee89c0f15137b2ab08d56d0531c 100644 GIT binary patch delta 29807 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Îh#?c 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 diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index eaea165..4936ad1 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -23,10 +23,10 @@ _CompanyName = "Fernando D. Bozzo" _FileDescription = "Conversor bidireccional de binarios FoxPro 9 (scx,vcx,pjx) a texto para sustituir al scctext :-)" _LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/" _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/" -_ProductName = " FOXBIN2PRG v1.19.24" +_ProductName = " FOXBIN2PRG v1.19.25" _MajorVer = "1" _MinorVer = "19" -_Revision = "24" +_Revision = "25" _LanguageID = "1034" _AutoIncrement = "0" * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index c88d29b45deff9eaa7c1190a7218377e4f7a1ca3..9d4f1cebd717c37712adfe426c19c4880de8e176 100644 GIT binary patch delta 52760 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°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 Bu@nFR delta 35951 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 av6cfK_W$Eq|CidvQ+!KS{Grj<|NbAWAL94` diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 7b335c58f3b750dfd6d8e9a9c90bd3d6f0d8e944..8207c4a9eeb12ab151b23e20e86e88ac4e8b41e1 100644 GIT binary patch delta 834 zcmX}pO-NKx6bJBg=f01|>5VzsI5tl2X$=?}yf^dS%$pz-s%as{gQQJXkU>O{g;Wc* zTWwmHSR5gw51lp=ed!{SAgG~Lp^><$O$oN>3zQ0Kk#=Sry_?^A_j3OCM>^0!NXor=)D zFRhdqj^&z|tBhln>ha(*;Bi&(1o?$*Cr_>uyodZj=EyF;;IGI>*!eZ=2@;OEGm^@0zP|Hvn#(2C0}D6~JoieX05bsapT#?cJQ_%ztc zV~n9(E_e%hg*-y~Hwb=#>?d!LT7}@x$wBfXSrHPNb0h)AN;o>kYYppR zwwcV>I9eMCzS#>fe1JAG5{{EVPjA91C4}RujQ*G<&rUNqip{Y;xhu~gf-hrz+J}1# z4nAN&y-F2&rQ?Dg$HC2E?$CcB^!6Bo#z-O5HEoANcVUHYX|n?iy01~8kv2`d6j&)l z-BQL+GnnYc*Ltr!w2wgpwiJG2nP1}+H c=-A<-$1=@y@v#>45MHfskkW+{P1c|I4{PMsqW}N^ delta 837 zcmX}qTSydP6ae6V=HHoh-DXx-Tix7sXN9GUMRVPq4bs9~A}Qv<$Lu9UqCkX9N$t0% zAR~+O5N2cskyLbfh$JY;2c@7QuMtHpL=+j+gOOm;nRU1G@(ur)bN=gSW;EkbWl?_M z8TW{WoidUdOn6pn-A_X$`N%XYN=Cu3Ow%1&S>VZyMV=^HI+=#=LMQ#Wz{6pYNl!52 zhGJ>93ZrESDEB&a2(xWoM!V2&sDmCYVss1o1NEZqK1RRH^YF{Zq{;bw7wo^*<$AG0 zM=-lo%;*WU%iqr<%YH^vXwN!EL+D@h&m0d->gN$oX42icd@sYcE$HwjK$Qh}Bsb9k z{6h#ZdJH{-?niwkjBZBpvZGq?W>{ zVQX5hcXNe9>#*i#1*1`Pb0wq8(>&Zp7tn2CMjxX0!r3CjNSa34NW-;ArPMje6K4vq zPuEQwCy2qPszi85Cd6?sITxy?naPx88F*+|<88mflk8O<(p5cTV>eGOpM=L%EzlYW zz*wZj`?-}TC2c(Hj2tYC$s6Bs#Q&AUS7Pee#ffc&axn<^y#n~6ny~LRN8Unxv`@%R zaO5mJi}p!-Z*k=L9V{{Iq&HLIPqR# tho2)$@Fspp#B?1K+b~{p Date: Sun, 22 Jun 2014 21:40:36 +0200 Subject: [PATCH 16/23] Changeset: 326 fdbozzo - 22/06/2014 21:39:59: --- Convert_VFP9_BIN_2_PRG.vbs | 5 +++-- Convert_VFP9_PRG_2_BIN.vbs | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index 00968b3..c55e9c7 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -151,11 +151,12 @@ End Sub Private Sub evaluateFile( tcFile ) lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) oVFP9.SetVar "gc_Ext", lcExt - 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg(gc_Ext)") Then + oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '', '', '', '', '', '', '', '', '" & tcFile & "' )" ) + If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Bin2Prg(gc_Ext)") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - 'End If + End If End Sub diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index b094e84..785b52e 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -158,11 +158,17 @@ End Sub Private Sub evaluateFile( tcFile ) lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) oVFP9.SetVar "gc_Ext", lcExt - 'If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin(gc_Ext)") Then + + 'PROCEDURE EvaluarConfiguracion + ' LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; + ' , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile + + oVFP9.DoCmd( "oFoxBin2prg.EvaluarConfiguracion( '', '', '', '', '', '', '', '', '" & tcFile & "' )" ) + If oVFP9.Eval("oFoxBin2prg.TieneSoporte_Prg2Bin(gc_Ext)") Then nFile_Count = nFile_Count + 1 ReDim Preserve aFiles(nFile_Count) aFiles(nFile_Count) = tcFile - 'End If + End If End Sub From 77fdfd3d15d6545e4247c4b6f631a00bffa2127f Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 24 Jun 2014 00:45:23 +0200 Subject: [PATCH 17/23] =?UTF-8?q?Changeset:=20327=20fdbozzo=20-=2022/06/20?= =?UTF-8?q?14=2021:40:37:=20-=20Agregada=20translaci=C3=B3n=20del=20mensaj?= =?UTF-8?q?e=20"Procesando=20archivo"=20de=20los=20scripts=20vbs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convert_VFP9_BIN_2_PRG.vbs | 2 +- Convert_VFP9_PRG_2_BIN.vbs | 2 +- Normalize_FileNames.vbs | 4 ++-- foxbin2prg.exe | Bin 435821 -> 436021 bytes foxbin2prg.pjt | Bin 586482 -> 586712 bytes foxbin2prg.pjx | Bin 8993 -> 8993 bytes foxbin2prg.prg | 2 ++ 7 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Convert_VFP9_BIN_2_PRG.vbs b/Convert_VFP9_BIN_2_PRG.vbs index c55e9c7..b09d990 100644 --- a/Convert_VFP9_BIN_2_PRG.vbs +++ b/Convert_VFP9_BIN_2_PRG.vbs @@ -90,7 +90,7 @@ Else oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.SHOW()" ) For i = 1 To nFile_Count - oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.lbl_TAREA.CAPTION = 'Procesando " & aFiles(i) & "...'" ) + oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.lbl_TAREA.CAPTION = oFoxBin2Prg.c_loc_processing_file + ' " & aFiles(i) & "...'" ) oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.nVALUE = " & i ) cFlagRecompile = "'" & FileSystemObject.GetParentFolderName( aFiles(i) ) & "'" diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 785b52e..b284ab0 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -97,7 +97,7 @@ Else oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.SHOW()" ) For i = 1 To nFile_Count - oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.lbl_TAREA.CAPTION = 'Procesando " & aFiles(i) & "...'" ) + oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.lbl_TAREA.CAPTION = oFoxBin2Prg.c_loc_processing_file + ' " & aFiles(i) & "...'" ) oVFP9.DoCmd( "oFoxBin2prg.o_Frm_Avance.nVALUE = " & i ) cFlagRecompile = "'" & FileSystemObject.GetParentFolderName( aFiles(i) ) & "'" diff --git a/Normalize_FileNames.vbs b/Normalize_FileNames.vbs index ab244bb..159e23c 100644 --- a/Normalize_FileNames.vbs +++ b/Normalize_FileNames.vbs @@ -47,7 +47,7 @@ Else Next If GetBit(nDebug, 4) Then - MsgBox "Fin del Proceso!", 64, WScript.ScriptName + MsgBox "End of Process!", 64, WScript.ScriptName End If End If @@ -89,7 +89,7 @@ Private Sub evaluateFile( tcFile ) cCMD = "DO '" & cEXETool & "' WITH '" & tcFile & "','','F','',.F.," & cFlagDontShowErrMsg If cFlagJustShowCall = "1" Then - MsgBox cCMD, 0, "PARAMETROS ENVIADOS" + MsgBox cCMD, 0, "PARAMETERS" Else oVFP9.DoCmd( cCMD ) 'nExitCode = oVFP9.Eval("_SCREEN.ExitCode") diff --git a/foxbin2prg.exe b/foxbin2prg.exe index c496a77d5b7d0ee89c0f15137b2ab08d56d0531c..eb3c07e0c3c184a830758b7978c16529a09626b6 100644 GIT binary patch delta 23339 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 delta 23063 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 diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 9d4f1cebd717c37712adfe426c19c4880de8e176..953073fb4354941b7c415ef639ae390ff5859c57 100644 GIT binary patch delta 22777 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 diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 8207c4a9eeb12ab151b23e20e86e88ac4e8b41e1..3d076dfd27a2fd0ed68c148202caed9477a77a84 100644 GIT binary patch delta 67 zcmZ4Jw$P2mfR9aLBg=Lcc2ffbGjk);$%k0}s({#L78VRp;1;5w;HCfsrY0sT(##CL Oj7$tpn;)~<$pQchf(`)y delta 67 zcmZ4Jw$P2mfR9aVBg=Lcb`wiOOEV+O$%k0}s({$WrsfP#;1;5w;HCfsrY0sJAzwx& L29?c^S?y#2391dV diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 6b7ab39..16caf4b 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -489,6 +489,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROTECTED l_ConfigEvaluated, n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 + *-- Localized properties + c_loc_processing_file = C_PROCESSING_LOC *-- c_Foxbin2prg_FullPath = '' c_Foxbin2prg_ConfigFile = '' From 65640ee6ca6231a508e00d126273a0c2318f181d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 25 Jun 2014 00:31:55 +0200 Subject: [PATCH 18/23] =?UTF-8?q?Changeset:=20328=20fdbozzo=20-=2024/06/20?= =?UTF-8?q?14=2019:58:49:=20-=20Agregado=20log=20de=20configuraci=C3=B3n?= =?UTF-8?q?=20de=20cache=20de=20lectura=20CFG=20para=20mejorar=20informaci?= =?UTF-8?q?=C3=B3n=20de=20depuraci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 432 ++++++++++++++++++++++++++----------------------- 1 file changed, 227 insertions(+), 205 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 16caf4b..682ce6e 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1042,239 +1042,259 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LPARAMETERS tcDontShowProgress, tcDontShowErrors, tcNoTimestamps, tcDebug, tcRecompile, tcExtraBackupLevels ; , tcClearUniqueID, tcOptimizeByFilestamp, tc_InputFile - LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue ; + LOCAL lcConfigFile, llExisteConfig, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path ; , lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; - , lo_Configuration AS Collection + , lo_Configuration AS Collection ; + , loEx as Exception - WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' - STORE 0 TO lnKey - tcRecompile = EVL(tcRecompile,'1') - lcConfigFile = .c_Foxbin2prg_ConfigFile - tc_InputFile = EVL(tc_InputFile, .c_InputFile) - - IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded - IF EMPTY(tc_InputFile) - ERROR C_FILE_NOT_FOUND_LOC + ': .c_InputFile = "' + tc_InputFile + '"' - ENDIF - lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', JUSTPATH(tc_InputFile) ) - ENDIF - - lo_Configuration = .o_Configuration - .n_CFG_Actual = 0 - .l_CFG_CachedAccess = .F. - - IF .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 - .n_CFG_Actual = lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) - .l_CFG_CachedAccess = (.n_CFG_Actual > 0) - ENDIF - - *IF NOT .l_ConfigEvaluated - lo_CFG = THIS + TRY + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + STORE 0 TO lnKey + tcRecompile = EVL(tcRecompile,'1') + lcConfigFile = .c_Foxbin2prg_ConfigFile + tc_InputFile = EVL(tc_InputFile, .c_InputFile) - IF .n_CFG_Actual = 0 THEN - llExisteConfig = FILE( lcConfigFile ) + IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded + IF EMPTY(tc_InputFile) + ERROR C_FILE_NOT_FOUND_LOC + ': .c_InputFile = "' + tc_InputFile + '"' + ENDIF + lcConfigFile = FORCEPATH( 'foxbin2prg.cfg', JUSTPATH(tc_InputFile) ) + ENDIF + + lo_Configuration = .o_Configuration + .n_CFG_Actual = 0 + .l_CFG_CachedAccess = .F. + lc_CFG_Path = UPPER( JUSTPATH( lcConfigFile ) ) + + IF .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 + .n_CFG_Actual = lo_Configuration.GetKey( lc_CFG_Path ) + .l_CFG_CachedAccess = (.n_CFG_Actual > 0) ENDIF - IF llExisteConfig AND .n_CFG_Actual = 0 - .writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile ) - - IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded - lo_CFG = CREATEOBJECT('CL_CFG') - lo_Configuration.Add( lo_CFG, UPPER( JUSTPATH( lcConfigFile ) ) ) - ELSE - lo_Configuration.Add( NULL, UPPER( JUSTPATH( lcConfigFile ) ) ) + *IF NOT .l_ConfigEvaluated + lo_CFG = THIS + + IF .n_CFG_Actual = 0 THEN + llExisteConfig = FILE( lcConfigFile ) ENDIF - FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - laConfig(I) = LOWER( laConfig(I) ) + IF llExisteConfig AND .n_CFG_Actual = 0 + .writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile ) - DO CASE - CASE INLIST( LEFT( laConfig(I), 1 ), '*', '#', '/', "'" ) - LOOP + IF .l_AllowMultiConfig AND .l_ConfigEvaluated AND .l_Main_CFG_Loaded + lo_CFG = CREATEOBJECT('CL_CFG') + lo_Configuration.Add( lo_CFG, lc_CFG_Path ) + ELSE + lo_Configuration.Add( NULL, lc_CFG_Path ) + ENDIF - CASE LEFT( laConfig(I), 10 ) == LOWER('Extension:') - lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) - lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) - IF PEMSTATUS( THIS, lcExt, 5 ) - .ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - *.writeLog( 'Reconfiguración de extensión:' + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > ' + C_EXTENSION_RECONFIGURATION_LOC + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - ENDIF + FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) + laConfig(I) = LOWER( laConfig(I) ) - CASE LEFT( laConfig(I), 17 ) == LOWER('DontShowProgress:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) - IF NOT INLIST( TRANSFORM(tcDontShowProgress), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcDontShowProgress = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) ) - ENDIF + DO CASE + CASE INLIST( LEFT( laConfig(I), 1 ), '*', '#', '/', "'" ) + LOOP - CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:') - *-- Priorizo si tcDontShowErrors NO viene con "0" como parámetro, ya que los scripts vbs - *-- los utilizan para sobreescribir la configuración por defecto de foxbin2prg.cfg - lcValue = ALLTRIM( SUBSTR( laConfig(I), 16 ) ) - IF NOT INLIST( TRANSFORM(tcDontShowErrors), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcDontShowErrors = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) ) - ENDIF + CASE LEFT( laConfig(I), 10 ) == LOWER('Extension:') + lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) + lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) + IF PEMSTATUS( THIS, lcExt, 5 ) + .ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + *.writeLog( 'Reconfiguración de extensión:' + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > ' + C_EXTENSION_RECONFIGURATION_LOC + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + ENDIF - CASE LEFT( laConfig(I), 13 ) == LOWER('NoTimestamps:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 14 ) ) - IF NOT INLIST( TRANSFORM(tcNoTimestamps), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcNoTimestamps = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ) - ENDIF + CASE LEFT( laConfig(I), 17 ) == LOWER('DontShowProgress:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) + IF NOT INLIST( TRANSFORM(tcDontShowProgress), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcDontShowProgress = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) ) + ENDIF - CASE LEFT( laConfig(I), 6 ) == LOWER('Debug:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 7 ) ) - IF NOT INLIST( TRANSFORM(tcDebug), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcDebug = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDebug: ' + TRANSFORM(tcDebug) ) - ENDIF + CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:') + *-- Priorizo si tcDontShowErrors NO viene con "0" como parámetro, ya que los scripts vbs + *-- los utilizan para sobreescribir la configuración por defecto de foxbin2prg.cfg + lcValue = ALLTRIM( SUBSTR( laConfig(I), 16 ) ) + IF NOT INLIST( TRANSFORM(tcDontShowErrors), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcDontShowErrors = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) ) + ENDIF - CASE LEFT( laConfig(I), 18 ) == LOWER('ExtraBackupLevels:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 19 ) ) - IF NOT ISDIGIT( TRANSFORM(tcExtraBackupLevels) ) AND ISDIGIT( lcValue ) THEN - tcExtraBackupLevels = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > tcExtraBackupLevels: ' + TRANSFORM(tcExtraBackupLevels) ) - ENDIF + CASE LEFT( laConfig(I), 13 ) == LOWER('NoTimestamps:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 14 ) ) + IF NOT INLIST( TRANSFORM(tcNoTimestamps), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcNoTimestamps = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ) + ENDIF - CASE LEFT( laConfig(I), 14 ) == LOWER('ClearUniqueID:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 15 ) ) - IF NOT INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcClearUniqueID = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 15 )) ) ) - ENDIF + CASE LEFT( laConfig(I), 6 ) == LOWER('Debug:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 7 ) ) + IF NOT INLIST( TRANSFORM(tcDebug), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcDebug = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDebug: ' + TRANSFORM(tcDebug) ) + ENDIF - CASE LEFT( laConfig(I), 20 ) == LOWER('OptimizeByFilestamp:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 21 ) ) - IF NOT INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN - tcOptimizeByFilestamp = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 21 )) ) ) - ENDIF + CASE LEFT( laConfig(I), 18 ) == LOWER('ExtraBackupLevels:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 19 ) ) + IF NOT ISDIGIT( TRANSFORM(tcExtraBackupLevels) ) AND ISDIGIT( lcValue ) THEN + tcExtraBackupLevels = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcExtraBackupLevels: ' + TRANSFORM(tcExtraBackupLevels) ) + ENDIF - CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) - IF INLIST( lcValue, '0', '1' ) THEN - .l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 18 )) ) ) - ENDIF + CASE LEFT( laConfig(I), 14 ) == LOWER('ClearUniqueID:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 15 ) ) + IF NOT INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcClearUniqueID = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 15 )) ) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.PJX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > PJX_Conversion_Support: ' + TRANSFORM(lo_CFG.PJX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 20 ) == LOWER('OptimizeByFilestamp:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 21 ) ) + IF NOT INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) AND INLIST( lcValue, '0', '1' ) THEN + tcOptimizeByFilestamp = lcValue + .writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 21 )) ) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('VCX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.VCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > VCX_Conversion_Support: ' + TRANSFORM(lo_CFG.VCX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 17 ) == LOWER('AllowMultiConfig:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 18 ) ) + IF INLIST( lcValue, '0', '1' ) THEN + .l_AllowMultiConfig = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(ALLTRIM( SUBSTR( laConfig(I), 18 )) ) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('SCX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.SCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > SCX_Conversion_Support: ' + TRANSFORM(lo_CFG.SCX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('PJX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.PJX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > PJX_Conversion_Support: ' + TRANSFORM(lo_CFG.PJX_Conversion_Support) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('FRX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.FRX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > FRX_Conversion_Support: ' + TRANSFORM(lo_CFG.FRX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('VCX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.VCX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > VCX_Conversion_Support: ' + TRANSFORM(lo_CFG.VCX_Conversion_Support) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('LBX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.LBX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > LBX_Conversion_Support: ' + TRANSFORM(lo_CFG.LBX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('SCX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.SCX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > SCX_Conversion_Support: ' + TRANSFORM(lo_CFG.SCX_Conversion_Support) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('MNX_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.MNX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > MNX_Conversion_Support: ' + TRANSFORM(lo_CFG.MNX_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('FRX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.FRX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > FRX_Conversion_Support: ' + TRANSFORM(lo_CFG.FRX_Conversion_Support) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('DBF_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.DBF_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(lo_CFG.DBF_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('LBX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.LBX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > LBX_Conversion_Support: ' + TRANSFORM(lo_CFG.LBX_Conversion_Support) ) + ENDIF - CASE LEFT( laConfig(I), 23 ) == LOWER('DBC_Conversion_Support:') - lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) - IF INLIST( lcValue, '0', '1', '2' ) THEN - lo_CFG.DBC_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBC_Conversion_Support: ' + TRANSFORM(lo_CFG.DBC_Conversion_Support) ) - ENDIF + CASE LEFT( laConfig(I), 23 ) == LOWER('MNX_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.MNX_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > MNX_Conversion_Support: ' + TRANSFORM(lo_CFG.MNX_Conversion_Support) ) + ENDIF - ENDCASE - ENDFOR + CASE LEFT( laConfig(I), 23 ) == LOWER('DBF_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.DBF_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(lo_CFG.DBF_Conversion_Support) ) + ENDIF - IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 - .n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) + CASE LEFT( laConfig(I), 23 ) == LOWER('DBC_Conversion_Support:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 24 ) ) + IF INLIST( lcValue, '0', '1', '2' ) THEN + lo_CFG.DBC_Conversion_Support = INT( VAL( lcValue ) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBC_Conversion_Support: ' + TRANSFORM(lo_CFG.DBC_Conversion_Support) ) + ENDIF + + ENDCASE + ENDFOR + + IF .l_AllowMultiConfig AND .l_Main_CFG_Loaded AND lo_Configuration.Count > 0 + .n_CFG_Actual = lo_Configuration.Count &&lo_Configuration.GetKey( UPPER( JUSTPATH( lcConfigFile ) ) ) + ENDIF + ENDIF && llExisteConfig + + IF INLIST( TRANSFORM(tcDontShowProgress), '0', '1' ) THEN + lo_CFG.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') + ENDIF + IF NOT EMPTY(tcDontShowErrors) + lo_CFG.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') + ENDIF + IF NOT .l_Main_CFG_Loaded + lo_CFG.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) + ENDIF + IF INLIST( TRANSFORM(tcNoTimestamps), '0', '1' ) THEN + lo_CFG.l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0') + ENDIF + IF INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) THEN + lo_CFG.l_ClearUniqueID = NOT (TRANSFORM(tcClearUniqueID) == '0') + ENDIF + IF INLIST( TRANSFORM(tcDebug), '0', '1' ) THEN + lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1') + ENDIF + tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) ) + lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) ) + IF INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) THEN + lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0') ENDIF - ENDIF && llExisteConfig - IF INLIST( TRANSFORM(tcDontShowProgress), '0', '1' ) THEN - lo_CFG.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') - ENDIF - IF NOT EMPTY(tcDontShowErrors) - lo_CFG.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - ENDIF - IF NOT .l_Main_CFG_Loaded - lo_CFG.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) - ENDIF - IF INLIST( TRANSFORM(tcNoTimestamps), '0', '1' ) THEN - lo_CFG.l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0') - ENDIF - IF INLIST( TRANSFORM(tcClearUniqueID), '0', '1' ) THEN - lo_CFG.l_ClearUniqueID = NOT (TRANSFORM(tcClearUniqueID) == '0') - ENDIF - IF INLIST( TRANSFORM(tcDebug), '0', '1' ) THEN - lo_CFG.l_Debug = (TRANSFORM(tcDebug)=='1') - ENDIF - tcExtraBackupLevels = EVL( tcExtraBackupLevels, TRANSFORM( lo_CFG.n_ExtraBackupLevels ) ) - lo_CFG.n_ExtraBackupLevels = INT( VAL( TRANSFORM(tcExtraBackupLevels) ) ) - IF INLIST( TRANSFORM(tcOptimizeByFilestamp), '0', '1' ) THEN - lo_CFG.l_OptimizeByFilestamp = NOT (TRANSFORM(tcOptimizeByFilestamp) == '0') - ENDIF + .writeLog( '---' ) + .writeLog( '> l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) ) + .writeLog( '> l_ShowErrors: ' + TRANSFORM(.l_ShowErrors) ) + .writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' ) + .writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) ) + .writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) ) + .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) + .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) + .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) - .writeLog( '---' ) - .writeLog( '> l_ShowProgress: ' + TRANSFORM(.l_ShowProgress) ) - .writeLog( '> l_ShowErrors: ' + TRANSFORM(.l_ShowErrors) ) - .writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' ) - .writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) ) - .writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) ) - .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) - .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) - .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) + lo_CFG = NULL + RELEASE lo_CFG + + *-- Si existe una configuración y es NULL, se usa la predeterminada + *IF .l_AllowMultiConfig AND .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN + IF .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN + .n_CFG_Actual = 0 + ENDIF - lo_CFG = NULL - RELEASE lo_CFG - - *-- Si existe una configuración y es NULL, se usa la predeterminada - *IF .l_AllowMultiConfig AND .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN - IF .n_CFG_Actual > 0 AND ISNULL( .o_Configuration( .n_CFG_Actual ) ) THEN - .n_CFG_Actual = 0 - ENDIF - IF NOT llExisteConfig OR .n_CFG_Actual = 0 THEN - .l_CFG_CachedAccess = .T. && Es acceso cacheado porque usa config.por defecto sin archivo CFG - ENDIF - IF NOT .l_Main_CFG_Loaded THEN - .l_Main_CFG_Loaded = .T. - ENDIF + .writeLog( '> l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) + ' ( InputFile=' + tc_InputFile + ', CFG=' + FORCEPATH( 'foxbin2prg.cfg', lc_CFG_Path ) + ' )' ) - .l_ConfigEvaluated = .T. - *ENDIF && .l_ConfigEvaluated - ENDWITH && THIS + IF NOT llExisteConfig OR .n_CFG_Actual = 0 THEN + .l_CFG_CachedAccess = .T. && Es acceso cacheado porque usa config.por defecto sin archivo CFG + ENDIF + + IF NOT .l_Main_CFG_Loaded THEN + .l_Main_CFG_Loaded = .T. + ENDIF + + .l_ConfigEvaluated = .T. + *ENDIF && .l_ConfigEvaluated + ENDWITH && THIS + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + STORE NULL TO lo_Configuration, lo_CFG + RELEASE lo_Configuration, lo_CFG + + ENDTRY RETURN ENDPROC @@ -1388,10 +1408,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + C_TAB + 'tlRelanzarError: ' + TRANSFORM(tlRelanzarError) + CR_LF ; + C_TAB + 'tcOriginalFileName: ' + TRANSFORM(tcOriginalFileName) + CR_LF ; + C_TAB + 'tcRecompile: ' + TRANSFORM(tcRecompile) + CR_LF ; - + C_TAB + 'tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ; - + C_TAB + 'tcBackupLevels: ' + TRANSFORM(tcBackupLevels) ; - + C_TAB + 'tcClearUniqueID: ' + TRANSFORM(tcClearUniqueID) ; - + C_TAB + 'tcOptimizeByFilestamp: ' + TRANSFORM(tcOptimizeByFilestamp) ) + + C_TAB + 'tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) + CR_LF ; + + C_TAB + 'tcBackupLevels: ' + TRANSFORM(tcBackupLevels) + CR_LF ; + + C_TAB + 'tcClearUniqueID: ' + TRANSFORM(tcClearUniqueID) + CR_LF ; + + C_TAB + 'tcOptimizeByFilestamp: ' + TRANSFORM(tcOptimizeByFilestamp) + CR_LF ) IF _VFP.STARTMODE > 0 SET ESCAPE OFF @@ -1697,6 +1717,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM STORE NULL TO THIS.o_Frm_Avance ENDIF CD (JUSTPATH(THIS.c_CurDir)) + STORE NULL TO loFSO + RELEASE loFSO ENDTRY RETURN lnCodError From 5d5bd0a76ce53a5298c5be98a6725a241846bb2d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 25 Jun 2014 01:43:35 +0200 Subject: [PATCH 19/23] Changeset: 329 fdbozzo - 25/06/2014 00:31:56: - Limpieza de asignaciones sin uso ("..\..\" y "..\" sin nombre de archivo) --- foxbin2prg.prg | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 682ce6e..b84816c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2598,10 +2598,17 @@ DEFINE CLASS c_conversor_base AS SESSION ******************************************************************************************************************* PROCEDURE desnormalizarValorPropiedad + *-- Este método se ejecuta cuando se regenera el binario desde el tx2 LPARAMETERS tcProp, tcValue, tcComentario LOCAL lnCodError, lnPos, lcValue tcComentario = '' + *-- Limpieza de caracteres sin uso + IF INLIST(tcValue, '..\', '..\..\' ) THEN + *MESSAGEBOX( 'Encontrado valor "' + tcValue + '" en propiedad "' + tcProp, 4096, PROGRAM() ) + tcValue = '' + ENDIF + *-- Ajustes de algunos casos especiales DO CASE CASE tcProp == '_memberdata' @@ -2813,7 +2820,7 @@ DEFINE CLASS c_conversor_base AS SESSION PROCEDURE get_SeparatedPropAndValue *-- Devuelve el valor separado de la propiedad. - *-- Si se indican más de 3 parámetros, evalúa el valor completo a través de las líneas de código + *-- Si se indican más de 3 parámetros, evalúa el valor completo a través de las líneas de código (valores multi-línea) *-------------------------------------------------------------------------------------------------------------- * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * taCodeLines (!@ IN ) El array con las líneas del código donde buscar @@ -2929,10 +2936,17 @@ DEFINE CLASS c_conversor_base AS SESSION ******************************************************************************************************************* PROCEDURE normalizarValorPropiedad + *-- Este método se ejecuta cuando se genera el tx2 desde el binario LPARAMETERS tcProp, tcValue, tcComentario LOCAL lcValue, I tcComentario = '' + *-- Limpieza de caracteres sin uso + IF INLIST(tcValue, '..\', '..\..\' ) THEN + *MESSAGEBOX( 'Encontrado valor "' + tcValue + '" en propiedad "' + tcProp, 4096, PROGRAM() ) + tcValue = '' + ENDIF + *-- Ajustes de algunos casos especiales DO CASE CASE tcProp == '_memberdata' From a1e4697db33451f657c9f4c019d52b260df0e537 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 25 Jun 2014 19:55:21 +0200 Subject: [PATCH 20/23] Changeset: 330 fdbozzo - 25/06/2014 01:43:36: --- foxbin2prg.exe | Bin 436021 -> 436313 bytes foxbin2prg.prg | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index eb3c07e0c3c184a830758b7978c16529a09626b6..e90bfb078b8b54d41eccab91e2863c50b8fc05c6 100644 GIT binary patch delta 24148 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index b84816c..a9754df 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2606,7 +2606,7 @@ DEFINE CLASS c_conversor_base AS SESSION *-- Limpieza de caracteres sin uso IF INLIST(tcValue, '..\', '..\..\' ) THEN *MESSAGEBOX( 'Encontrado valor "' + tcValue + '" en propiedad "' + tcProp, 4096, PROGRAM() ) - tcValue = '' + *tcValue = '' ENDIF *-- Ajustes de algunos casos especiales @@ -2944,7 +2944,7 @@ DEFINE CLASS c_conversor_base AS SESSION *-- Limpieza de caracteres sin uso IF INLIST(tcValue, '..\', '..\..\' ) THEN *MESSAGEBOX( 'Encontrado valor "' + tcValue + '" en propiedad "' + tcProp, 4096, PROGRAM() ) - tcValue = '' + *tcValue = '' ENDIF *-- Ajustes de algunos casos especiales From f18d17c500ff61fe6a1e4d4942f1a1b539121d74 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 25 Jun 2014 20:20:47 +0200 Subject: [PATCH 21/23] Changeset: 332 fdbozzo - 25/06/2014 19:56:11: --- TESTS/DATOS_READONLY/f_form_aa.sc2 | 2 +- TESTS/DATOS_READONLY/f_form_aa.sct | Bin 74942 -> 74942 bytes TESTS/DATOS_READONLY/f_form_aa.scx | Bin 4303 -> 4303 bytes TESTS/DATOS_READONLY/f_form_aa2.sc2 | 1 + TESTS/DATOS_READONLY/f_form_aa2.sct | Bin 48267 -> 48286 bytes TESTS/DATOS_READONLY/f_form_aa2.scx | Bin 1469 -> 1469 bytes TESTS/DATOS_READONLY/f_form_controles.sc2 | 6 +++--- TESTS/DATOS_READONLY/f_form_controles.sct | Bin 57112 -> 57121 bytes TESTS/DATOS_READONLY/f_form_controles.scx | Bin 10080 -> 10080 bytes TESTS/DATOS_READONLY/f_formset.sc2 | 6 +++--- TESTS/DATOS_READONLY/f_formset.sct | Bin 24260 -> 24269 bytes TESTS/DATOS_READONLY/f_formset.scx | Bin 4412 -> 4412 bytes TESTS/DATOS_READONLY/fb2p_frm_1.sc2 | 4 ++-- TESTS/DATOS_READONLY/fb2p_frm_1.sct | Bin 15381 -> 15381 bytes TESTS/DATOS_READONLY/fb2p_frm_1.scx | Bin 4303 -> 4303 bytes TESTS/DATOS_READONLY/fb2p_frm_2.sc2 | 2 +- TESTS/DATOS_READONLY/fb2p_frm_2.sct | Bin 5002 -> 5002 bytes TESTS/DATOS_READONLY/fb2p_frm_2.scx | Bin 1796 -> 1796 bytes TESTS/DATOS_READONLY/lib_controles.vct | Bin 1418252 -> 388757 bytes TESTS/DATOS_READONLY/lib_controles.vcx | Bin 51500 -> 33405 bytes 20 files changed, 11 insertions(+), 10 deletions(-) diff --git a/TESTS/DATOS_READONLY/f_form_aa.sc2 b/TESTS/DATOS_READONLY/f_form_aa.sc2 index 3111f33..fe1ddc3 100644 --- a/TESTS/DATOS_READONLY/f_form_aa.sc2 +++ b/TESTS/DATOS_READONLY/f_form_aa.sc2 @@ -57,7 +57,7 @@ DEFINE CLASS f_form_aa AS f_base OF "lib_controles.vcx" AllowOutput = .T. AlwaysOnBottom = .F. - AlwaysOnTop = .F. + AlwaysOnTop = .T. AutoCenter = .F. BackColor = 192,192,192 BindControls = .T. diff --git a/TESTS/DATOS_READONLY/f_form_aa.sct b/TESTS/DATOS_READONLY/f_form_aa.sct index ecdaea528ac49fc4f144f37c88d55fb1e70599c6..50cb6c250d9d33771e4ed39c69befd8b671ba266 100644 GIT binary patch delta 2179 zcmb`JZ%kWN7{Y`*}YQhJTVd7%uboD)zy6(>hP1^L= z``+8zbD#6v`#z_WGrGwc-T04scv}3V-%^27+B+D~c3@z)Dz-X4EW&=zr|9x*z(Aeb zs$-9D4{aGKV)RO<4Xn8<))NoK!cUmRVBJP2KCCVifqlgs(9C$L3#{mkyZIxPU@)%*#%N4-8xi59CaA&R21doMs8S#j`|9=L z>mQy0oI17R#=%t_A88YBoqq_>_em>m?OP|WG^{)e`0Fu?@;+euYgV^Wp>Z>lUbkj- zZ>Td8_AMXrF`trBvK)+Civ6VT2A!+hNglnKkr<-lGhzkRQtm~n12h`hlA)XGe!@!o z<-{9Qe@oa!>w&jTd3H$z6AM5#l>okaWfPgL$30)H&lrBU4fd@tuYIQ?N)( zNAhYa-7GOT`$1kcdgt8gP2E<5)qj>Rw{zY*j$gEa`+v9Co}3mtMD;nM8e0#z_=Fi+ zMAHSI2{&K4E|79(kqM@Q=rs?yKD(SJjP# wJWVC~h+)D+7zja}B8mxlY>`mui_@% delta 2457 zcmd6pUu@G=6vyxRt?jlSE$RN*u79@vRx=in(QX8plVzYY{EvMY10U3`TMVoNm$eHK zTsL?!4%|Es_i3j7frmlZ!c_{18=DZCMy$?c0pc)DQ7~DI51NP(%efonPZ$`94{h?v zJ-^=H@80h{=iYPfSVA|J(2e|<4KIqT*)3N5)78%F4WQyW*Ac9H%OKjcQ%3x$ayz;! zKgYV|6}B9wMOE{=di@!&P#NJLNOGFP;WiL3i*!Jx! zfRQr>968t|=P-kK_q%6-x7p#%x!HOQ+Kz~tT%ptZ6e5@`w z`{OQ5_@XnA9H(13g2Z^YH%19B1hc>2U5G{^OPzzzlIIjq;tlY{2t zwtm-+P$9WZK6zOO`-W*ik&`~Iq2REW2-$5Q!o)d3x?ClGA-vRSrdG0v?45)aqj5Jz zM|C1~7_u@}q-Sc0`105dC8GtRIQ~DMi0J57bRy`m1t$(=?Ak>%9?aaGL)%+SB|ptv z?|G&w4C!sH;_$wuc;QM>I+s2w;q^Zx)z#}SQyz2TmH{^(HNjd@`-4}Fl~|!!Cz8Ka zWNs#shy3gxgL(|k*5LOecPh)h9tlvHdk>>W8+e-yzQDfE7B9+Sjq4kB`J02Se(uW! zyK;nKNB>;8UCnIh#k#ZRDue0~5OxM5vs_^Oi6y8nil-#T7sSJ9l)j)$@Ho?%Jtne?>N`qzmvI~58^5%TWYtrCJ8ARjVAZ}-TybMZ}p}E#p5(u<*cBW`4GKwbl zeDKvb{I9oGRmy6(8F+gc6kGPwYUhJYcaAw1`lvFlpvq{`N#~(2Zfh*3SLAzHL<8{- skq-Z9vU8|YhFac8R+8OK6p<~rz=vdy6Hc;asl8724ML0cxSqn-Ku92NCZ8 delta 74 zcmX@FcwUjkfRBxBBTFrdps|5bh(S=Gp`odqn-Ku5$Px?y diff --git a/TESTS/DATOS_READONLY/f_form_aa2.sc2 b/TESTS/DATOS_READONLY/f_form_aa2.sc2 index c0d8745..4de1213 100644 --- a/TESTS/DATOS_READONLY/f_form_aa2.sc2 +++ b/TESTS/DATOS_READONLY/f_form_aa2.sc2 @@ -18,6 +18,7 @@ ENDDEFINE DEFINE CLASS f_form_aa1 AS f_form_aa OF "lib_controles.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="" Uniqueid="" /> + AlwaysOnTop = .T. DefHeight = DefLeft = DefTop = diff --git a/TESTS/DATOS_READONLY/f_form_aa2.sct b/TESTS/DATOS_READONLY/f_form_aa2.sct index 4a353247a58c579a2a6a8fe737631b104a347876..ce24efc6e875f9eff8fc4a7876dbf4ef0a817cf4 100644 GIT binary patch delta 50 zcmeDF$u#dL69)sso_P!m42&BEKQT^J;M~m2B*4h%Fj<5-hTAcxJh8IaKQAP|U~>ku G@=gGREDvY^ delta 38 ucmbRDld1bB69)sso^A#P2F8topBN`9aBgO15@2N1oh-r}v$>gBdM5zoU<&B~ diff --git a/TESTS/DATOS_READONLY/f_form_aa2.scx b/TESTS/DATOS_READONLY/f_form_aa2.scx index 495ec8eef85dd5579da9b090cfd90cfee99b56a2..40ed9bae1bed4063d8f80647b92c13e47cce55a0 100644 GIT binary patch delta 51 zcmdnXy_cKCfR9abBTFrdfUkjRn599up`od%p`o#f@#Kjt>1ZMh>1-i<-rYhJfC?Sa{@pAbjCZ*;WPM*Leve}>O$_wj~cN6 diff --git a/TESTS/DATOS_READONLY/f_form_controles.scx b/TESTS/DATOS_READONLY/f_form_controles.scx index 0aa5edcc0def4c3d19758ee76e7c1c649e32c2f8..4c800bce6808bfbf166c1d3d0a6fae77e55c1d58 100644 GIT binary patch literal 10080 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 diff --git a/TESTS/DATOS_READONLY/f_formset.scx b/TESTS/DATOS_READONLY/f_formset.scx index 40254d416f45671ea0a8d2773d7a6f40f7de71fc..530b1ec1f03136b7476231de42b6f64ce32edf71 100644 GIT binary patch delta 960 zcmYMyL1@!Z90u?=NbN}0HcosXI#{w+w>HkC>!e|d%ne&)VApBac0GuSH#hO(K@>#r zAojB7rFwFLB6!$tJ4`*fsVE-wuriRLg53^-iF2Tb`MtcPdGO;a{eO9RZL***=#m-U zwQo-PEd~26t1p$b*^czN`MDmrqHl$XvsxmAgg}Ed@HN>*$m1@ysT_~m!)J#qt3PSl z$+TrnMn&N!@;=nyZIoGZhN(f7K8uO*JaQ41A$ZUo2edQ(MvI3;^9%ADY(i(Z(_9Tn zY$Mo4r@BSu7P1Nt;T^Axuu7{!t36`;2>Bf5;b#xVS@xziLep_E&L9hL5vJq(YHiRz zMj;_umyp-sHq0iR)=9s$*EAsrBhlHr_0m6g36hs7odqzzfP&P=&T-@B7KvH@EV z?R73(mleIyOUO2;M+i9p1`GjTOF2UR=I{tk==m~^;y%WuQ88XduE9TO&tu07TMY#? zQyki~Q|8yaXs#pwfILP>a?ERXT7ENjPBi_CwUX;Aem=RHE-K{i`+aQ(k>&wkb4V4*u#n&wI6?_DF!mD`i t5&yFXCPeczvILjmiQjbJCEk=OgzNzW(vXF#73?{{KB;EQh3VbL{sZ!5$5sFU delta 960 zcmYMyO=#0#90u^Wkl2~5AL@J++`*(Bu3cT$v>gVqQ0n0%rC2t zrJs^FVK5_^O!9xy+s^Mb`MkdFC)W9clmdk8hB%mKIz-5w5Z_Qo!s(-@#tb8wVCh84 zFs8$za0z(>W??1F4JFHi-XOi-C&mlNC1}9kK6@-{C*4I$`$Y3Kat*$~u70c8@=3hy z?WQyRqH-BogWK@TteoK0E|u0IVmya@01NOjg7Go_sw+U_Q87M@9EUR8jG9+#qwZsj z4~SL;c@D0?{D9Ru;bA)W<@Cq_|zHB~wV%$Ks;0J8YV`G-Le6q&G zL$mY{dzTl@Pss1!nIt4K=`{BmZnO8aXhxAK$U==zbQkFpd-4ML2Aa@2wU z#KpIeb$A4yI~8rnz0LN5Xlh6XBXG4~FALHS_V_FEH*6^qGFEi%r5$h=UBtvZ*O9Yu z58ij0e8sQQ;gYBvM;2fP9+sSCJQh&ts$FR!+pr0#a;H*9rCt_W=8;d~C3q@M#rclR rKRZzo%~50y&cI!_X@5&*a}yJ#igyih$iUeub`JAKka + *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="olecontrol" Nombre="cl_form1.Cl_olecontrol1" Parent="cl_form1" ObjName="Cl_olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBdOTWhkM8BAwAAAIACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAOAAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAAIAAAABwAAAP7///8JAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP////8AAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACACwAAAEFwcGVhcmFuY2UACQAAAEkKAAAAAAAAAAwAAABCb3JkZXJTdHlsZQAJAAAASQoAAAABAAAADQAAAAAAAAUAAIAAAAAAAAABAAAAAAABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dABCdWxsZXRJbmRlbnQAEQAAAE4NAAAABwAAAAAAAAAAAAAAEAAAAERpc2FibGVOb1Njcm9sbAAFAAAATAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABSaWdodE1hcmdpbgARAAAATg0AAAAHAAAAAAAAAAAAAAAFAAAAVGV4dAAUAAAASAAAAAALAAAAT2xlY29udHJvbDENAAAAQXV0b1ZlcmJNZW51AAUAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> ADD OBJECT 'Commandgroup1' AS commandgroup WITH ; BackColor = 255,128,255, ; diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct index 09244dfba2929b253b0b1eefde691e4f9ccb823b..e129c30668e650100d0e6bd3de7c64b68538d4e3 100644 GIT binary patch delta 84 zcmbPQF|}et0XJjF=0fhr>TC|NmZl3QY>qNE=3v^#G`ZheN#PiC_|ipsVhnnEF+h}= omz-0Yk{XkiUr|t$ua|L-W%5O9Ii_o@lRsL^vE5_4Ev#h#003JZ`~Uy| delta 84 zcmbPQF|}et0XL)D=0fhr>TCu_D;Iw#+#F?W%)z90Z*sr2l7iX&@TH6N#2EDSVt^ diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx index 46c39386490dbc7e20625bd44d2178cbefb82a43..d312ba57bef6fec6849ec551eef565a1a62fb3f7 100644 GIT binary patch delta 38 ncmX@FcwUjkfR9abBg+>Sc2h$`V-o{|$^Ti>VC>B~tjXK}&%p{u delta 38 ncmX@FcwUjkfR9yhBg+>Sb|VuDOG7im$^Ti>VC>B~tjXK}(4Y!n diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sc2 b/TESTS/DATOS_READONLY/fb2p_frm_2.sc2 index 74c0cc8..83f80ed 100644 --- a/TESTS/DATOS_READONLY/fb2p_frm_2.sc2 +++ b/TESTS/DATOS_READONLY/fb2p_frm_2.sc2 @@ -33,7 +33,7 @@ DEFINE CLASS form1 AS form AllowOutput = .T. AlwaysOnBottom = .F. - AlwaysOnTop = .F. + AlwaysOnTop = .T. AutoCenter = .F. a_otra = .F. BackColor = 240,240,240 diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sct b/TESTS/DATOS_READONLY/fb2p_frm_2.sct index 5638dcdb9b1521cbd8e8c2857f67559e7d319eac..7be952308c38a764defe9dc3ce383adc63a43648 100644 GIT binary patch delta 14 VcmeBD?^54zn~gDK^BuNzJOC=?1(*N; delta 14 VcmeBD?^54zn~l+J^BuNzJOC<@1&ROw diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.scx b/TESTS/DATOS_READONLY/fb2p_frm_2.scx index 3623de93731595dfa95e915f11421174d8654c82..e64eabb8ba8f2898e69551d1ac1f1eb977033014 100644 GIT binary patch delta 38 ncmZqSYvE%t;A4~A$nu4S-PF*~*u=nO@_&}gF!tt~tlEqKyh{oz delta 38 ncmZqSYvE%t;A3Uq$nu4S-O$3s$iU2W@_&}gF!tt~tlEqKy7USt diff --git a/TESTS/DATOS_READONLY/lib_controles.vct b/TESTS/DATOS_READONLY/lib_controles.vct index 607a7ca6ebd7aa7f4d20640c28375cba93518cc2..86434eff646bf70bbdfe0545316130f7058ea6da 100644 GIT binary patch delta 512 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 G^!y*@Xk0V^ diff --git a/TESTS/DATOS_READONLY/lib_controles.vcx b/TESTS/DATOS_READONLY/lib_controles.vcx index 120069695697278d224e6c4c7244f6ea3a4d15dc..1ef9e56f152e9e365880effe86417e881dc71629 100644 GIT binary patch delta 4503 zcmZ9P3s_ZE7RMKya{%uXK@Nfta79H)x|hr2UNw27p@s@VIASCe<^yd|Arv#EOiey~ z?a`1_w9M)Y6=Twj64M+Tfx^IdO+pXLu>?nZjHdHHXCE&x`}=;Zeb)M~wIAo)eGWC7 zgg;lhOIDLdz|aFyg(w%9h{`gFiouKMD{Vmra}#7a2bXg-7Y`6kHnDb}Kz1}wA7r&h z+hVLUGKd}p@gN-df{!O6e*`P^?8ADVX_o!`ERyh1hXCQt^VS()?~IdmM6C-^;u z=zGux#w7oL0Xa6A7Z?m10KCBRQJT!aClu>++U@g45oLn0AR2^$Q*k}&^^@!4c&!@P zYOoHBwrP@J`9T|&0YuPcCAthINA{|a7|AQxV8ekgcx8|#F|pdLK0#J>HYJ0Io&=M@ zC=dzSLVDFY5yER7gnb88f^mVaTIGJa0cxqZK%!t^0=EN*u7YX(G+oafn9z?G90?l* zf&nwBLT|sJeMW1y^d@WHGlK26c(cply1;0AbbQTrqPs)gX!j+e57AfJZxO8BDa)I2 z`MT!f0ixC0?>`H5*LBg7NAM1!AOEY4lW6h@%Cy;Hqpc35un`fZ{fP?KK@(f=JzH0- z)r;J&=2)kh*@V6(xub+=e-rj%F;OS_O54^5i7Yqa@`C2#0iq)%m_-OX+}9wlY2?l# z*!XR@^+1YZyB)|33(NIN?Qn<14aSEzp=0Cyx1jQy&S1Y0%5(t zjjcq3xAq(+?6K})%!vM4Nz?&0Vw>iIh_hNj@4i{MR9Z6ZaNxmC_nWPITiduNOVqN3 zo+eiAXSN;4Bs%mQ(Yv4leWe{*&ut=n4;S;k^0x}{w^*a!D0!IX^@kO}FGYB0-&ALi zFMG@9aoGTBz^{vl+ClB5`^y;=ojE3E8edLqY+P(3qVIufum&swqss5AS%SY=ehMz7 zrNbtGVPM8Wmn1hpWVQZ!dHg~mD+mT2;PL{ZldF2kg8S>`Q*a*uJHTp?2Y#5>OSTrW z3-kD(O|VBmB^c047H02Wg_owjRe<$^dNBX}9!1Ua+i)puGi(`{4q~f&NW@U>(Nnf% zoTiS24Fd+yR@W8KZg9I=*E%>d)Og0g>xJN#)XwxNA@UJ;8Z|GEVdD)fZ+vK7ZiZpk(^FVucY>K)Hr_~W-{~1B0eFJ;RNc1US>PeAc@>aCty0t42Q(7_X zY>*B*+38(T%v&%r<*eDIO=Ypmiyuv$KJ~bpTv95i$^Tp;P@dMmx`ZtlB+F}Y*=*)v zRf9jTma@}1@$PSyLNNmMy;$xPGpm{;8xO4_+6|O8ge^$(XKj-Xnszti)c6ngraZ5d zW&0*ibWd%;x|7x1Nogj(B`sX>A=ERqev48=X1H3bdANpXCz7YevomSM?kAQhB|RVU z5omKOu{r6J-0PL8jbz?aBkF>teB|c7^<{O`&WvO3cb2Q&Q<)d#h-#vsMZMP+Sj}u{ z!R*}QtKGenry&`yPUR(HHty68&fj5cSyNVs-&*uu1;@3BGPmb9O?C8{qd5}mlBPzx zCD&;8@eA0Gw0^>BKJM4Q5bgT;{;G(!ApQoJ*Tc7Fo3d72v6h;OOT5yp(}I(SW3QC9 z9yVF)fAaeH-N?rP#GpEaqKmBX}uwmJEs&$+u16(7<1 zKW^X^e_k)pdd;V(0?;1}vU~XSpR3hxY6CW6Fw9%2ej|IJF`n^C%VA5IWqPym;AZZ* z4f`v*15b1%_msdcWM`jfHtwt9o?Eb;tTw0F_~3T#`77*fw)V+pqxZ{v-hM0biemXQ znvH8Kx#wSHcy+STxy?rV3hr?%Cz{0i=N(QSq@BqVV4Ye&Y$;b|Y{8pmGw&;Z`y=ka zupNKv_UUkz<1YPyb6ROF {|^z(g0|M38 zWzT%e&HcAJCd@i-TzZ&mj=&yfKhFBt?r0S$9aLNtl?l*>i;`;fCnef?Me z%R0klGhvHB8Q6WMmu$jZy~X{UNHTZ`B!b6)`FTFM9Q22lvh;$);p3HKF~;h!IUUQ- zi?j*63+h25s3_(cUoMhp-~uJ%!3o_NSD?59{4R(z1USLtKxuA;5)EK!1*w+R@Kk|1 za2&LPnX`D^rTG%o=PGsC-2%O3cdkU`paeV(Qb0x)msVy<^i#SjEtsdboKBbM1Mmh| z2Nr^`G%npeNur6V>iVX1&(@hLQ7ABjyN^lK0rJN4jPFt;su-(e$Qj)kOUFv|6u5pt zteZZ6q=$OG9eg2Dx>YaGzPcY?_}HE0Huy}mBE{~AcE&jEZhE2++*@B@Mqg=F-|<1# zHHc)Z<=dn9uj=rf3clRm?fXiH&%yxKc)+{A(|!zrcfdAK4obn)y{=o0p;^LvdU@Pl z+-5Kk_yTueEa@dXx<@bHdyWs&1=|6Rf>Xu4WY>%Ia(ywE)xcJRWgw)ehb-8lFB0j- zA`zcQBAo>%z<_6Y+8^^Ui2}$+u+UFD*f$M&3l)fTWv)o)z)4U8yr1Fn$MZ$nljoA> z{=HAQ)4nlJq{ZMFkO`c?6DaNb86w@waV6BQ)LX9Q;GqJ?K^>?B9a&uddxl7kG)>;u z5|$>C7q~fDq|4w0I6an2GC4`4I1mO5pes?Noe5k%aI{EGBVF=) zpBOA3jKr3Kbzm8I3bZ@8JU<>cCDtWhaZrba-j2acK`ZzayaR?s^Mt)tk+Py(2`#G( zmN8KxMS>t;1UH6@bR>eyg(29haF^V=L}D`zNf;wB96wGV0|{ImDAER?v}Y|MtqFA{ zU9a{WqCUloLq(barhu_v81Q?5=TruXloaU73H{Vyu?33MALzl|0Fk~0zW!Xk#ZROJ zUzfZBa;vXM{y-1z`QSVRZ+dfigc&!);F6mT8!Qb5JR;y#um;QrS3J16#`Fw!Cyrpt)c=NCh@vzQUzbz8C0?4p-%STlAKV9Re)|b3iso0Iz?=+; z`I7rOTLfxpcBNcirnjUZ90djd5&VP`>h5taPdX;hrUq4B=&5Hj-A{8^-cq81p{?#ZO%T literal 51500 zcmeI5cYG98_lIwqk_HK)f+8Rw(%F&qDb#eKn10UQWPl)0@6f9s=(_D zQf*jhihzKM2!bf0h=>B>@40jDW+%JRcXwz1{GHF|*>iX9%=zw_opSEXY+@^Z(@pzB zgeVq1KzLecm=LX6Hp*+9(I9JZ8$zZq_UYxL`d|7J=+FO`e%4J^hkxl$qQA?(^e5Bb{a^Z1=SBt>Ye+wEB*cTJg%v&J>Hwe((IWDIn5dwVorxW!PcF? zO(7Mkz^$-D?gs%{ftYK*Gp$J5Ivsckel|>igr)&1u~>l^t1;bXZY6 zcV_Obahndj2EPQJgNE`%5TF%^d3+Jf+g_l5xt_<>`?SY< zvzU1`8e*pj{0Y1bufiNSY%5yKCGc;)K+L@w-I+}yxU>=YUXTwZDhEN#;|OA8cD+)F zI0Xk`2dsw9<%1wrRAw!8;QR2kp)4G}BM4$-mSO9do|&2HUXAbTz#H*P;W}hJ4xUV;lHpP zo`R&9V2b6q#j5DQx8diqV~>UdHwRNp9f*xh|LigKRey;84=jf-j{eiv|G%euZy>GR znY~ZoRj>f2Ku;JK7R=1rxW)1bE-e$E45c9TZ#6BDSMSVn-C`jG|NaYB9lQtS7xDgT zATnwhZ?QbLSP6nl`UKbI1RJd{QE=I!@v>9ViAlZ(9&^T?cU&JVjT; zEA^J+}Dxd#?0Ne+i&L!J zaZRnx)myWf#WL)Uyo>~0T_q+aCDzoz%HSj5m*HF&dBwtNEOcy?V!AAlV#f%+3)a9N z!-O~m>yDd0tAB0p%=EEQitQ!%Mpy#RzzC>6)jt9A+}>gx)uu1Mvxf*SEf?PiYC`v+ zYFZ$#USf&rLRpH;tObD`P#%iGw?l;ZXmTJjY8h`ayUI+8?IHLESPW0YgYbR-V2U~1 ztMRxFybr$<=EGfjS|F0%nK|8=Md`p-`mrU#HW;)i5Sf2kjr!y%SK~^8OM3x70lGl) z%W7I6uilyIlcyAGuEmn^m7q8r&I?3FE#q@_b*nz~tPK3z>ArR)$7lA0wDcrBK1;SG zCS*SqD(=n>6?Nf$+S2;cF3Nh+-&xP&>L2RyzVK>HNVhlErx+>LDJN76fXOfiUW3gb ztwKK2+ZHYC67%%lV!9%hVtv}HU}Nx8VIi#1(>w$D^4?o4Uv2tQEV4tWxDyf}9ooWB zkaqNeP|={9)y&$u#VYnt!R+{k&pvZs2KRD zRWW^Rlwz$PSHZgB2f;XaPEY%7La69C$xks~tE=&P2c7A$qx$o;75dI>9a1{vxOVEq z1m{QLVd8s&hfE0-Z_$=km3C2flKvxl9#{VbkN0M=Lf0FU5u5yUsF(+D!aHyregbJd zo(mNp&MaEkCFbc1#N0)y-Wm~mV^*lx4oBcDT!-SbmB2IeL&YyI1t{iuy-{X%aG?rz z3V#VA7KMu2LE5v+L&fD+0u(DMvoBs%!Or2YLd%zeiqMP@ddz|-Ir z*aZ9FN08QSZK(KQoqxgwVnt>4`kSF*D;$FF;40j{K?%&-94h|Y5}=ronQ34lGy8I@ z3U(fU9g1%Y6*WNGvUfv8^eSXcc`cc4M5uZy=1xHqF8o< zd(*#qKn08bG*py@+RzXJwSw==SdCRWa95AF*f7s9^K)D`6{~(9_!e6e_k|2vDr3 zO@Hw(D%d*wPB;vI>S_J1go;o92vAIYXYRX9a?{^* zMcGd;qn0$?6lVj;FvODGV$F5n`|)+)cG%m!Xfap7fAij%sllL;*-jmJ1O6454%NB_ zQ%v1uGQ{rEf#dPvaQ=ZX5z-}?V(KoFA@*Bm75FUvDC~l>9fK*RuA~}b$8_Mm_#N;n z>}(%QF?A)?5Zj;wufV?u<6%zQV2Y`o+7O$f1CPZIfP8o$FPLI2-J5=E9XJD@1m(cl zCYWOCc@QJBiaKyS{_oao98fzam}1%P%LWkVtq=gz^(8X;={y~h<(&Bm}2S*k0CY!0cmaVYvaO1Tf`3552lzZ zzYVc@2uQnFB1{~H>WH1YFPLKL3XdVSuDA;P41NsUV0D&A38t93!efXH&|=3TIqJhK z_)kJG#ncrZLu@j^rH#h-g9ec12&S02V_}Fnwb;G*JK#dGFww*oOfhxG!Vo)2aB1yt z;!p+g@IdV#it%8oe6-gP3n#d=D-mpkunl_G45pa6V_}G`Be=9Xr-X`Fn8^D`4W^iBU{PL+mBfd``IcOiE)z^K)4<{c z!KHnMe-Bo{m$wB|%rvlAti@hz!8J!14=456+xQfIzIbo?>MoP)4P-!R*grRzVx}?m4g#-$c`y~a!nIk! z6f=#f&lC6{?1n8c1D4GUrkH6=J&V9&U;uOlCv)KdvO6na8Cr~#in8cZ?MnED+8zYYsv2K0anqk}1C z8dIMj@CUF3R>Ko8c~mgPOk?Vi1nvT@APsJVS|frfW*Sr9Mc{C_GCV|_gKe;TXfVZ0 zW9qjEya;B(1ZW2j3=XE4X-u6>;6$hjcff@~A>#W1!4xx%slOob4tNum!65-IC!mV5XCY~ zW9oSX9uLFeA!rF*x&%|qG^WlXa01*5x516hA)-R3V2YW>)Nus9(vdSX9EDwQxP36i zOk?T~2)r5=!?Q37o^BgVG1HiOG=aN8E~G(qsFN2=G1Hj3Jb`b5KXW;9zybKSbuh(D zW9kD0ehXfMIq(>~+%lMArZM%i1Re=}pglB%Q%!>@W*So;B=8nk4GUl*#5NA5m}yLX zBa;(n4F(mE0A)dB1XIj3rj8-_rRp3T;Sg+tThf9lW*SqkCirZ43P!>MP^Mup#Y|)B zY=S33Rk$4vTos~h{a}ij#?(6r{wmCer(p<`yf2tyrZIJQf;WYFPz~atRNY{Tna0$A za|itl9D(;>72KO>LCn{u0CN$N7OA~@=ih7Li!L3V9TQzgkdy@Hkr);1Zhi)KO1E#l zQnbKM`uFO2TywnX@!ng^bp%1|W*zv?--Y-A4#F}B)V#%9M-aqj>%f!nk3e_%UQY`| z&|A!P1VQZA%PQn){2|y5GxfCKh`Ej+h&`zT55qqUIdI{(KxEW1-kG_MAc%dV1Am5p z7goVzdRico-eRsJ2x0?u;I8;KP!En>3Pk3gGIJe45Zj{z5B{8u1DeBK5U6=)<~o8P zR$K@E`yhuY_O-wG4dEi%ftt6N>#7`LKNDQqN&Htl4DO0UAObK_snP~ z)8F#w+w1Y(=gf|KEa)lb%lks#nLV*_$2R&34~f|qJfbpta8#I>s@oH37iAmhU#aJD z_3!j}?{jARJQj2X^v8Q-)*>-ck35rY_QdgHR2CnN4ikNK`x5P}{c_hGWi}f04Tx`GMOC{UbNq*utOQB{qS1zxKFKGeR%# zn#bqN()HsSt_1_}9+|bw%h7|uWLr}5WPKoBv6tU*>UOI~i_UB`{qO2|TpwhU$9tbM z%Rb-=5xDorET?g6J@QPpJ8WaMz*aKrrQ1jU;X9i{|1^&ewAACh&zV&kRP^feCr^*e zTD8k{eP{O6l+J^dz!+{l?y{*$c;911i>C7w%nu&>;Fliny~PSvV`|FldMAAw{|mt; z@=VWr7WOxvSK~&HPwCIm3+`kdL19t*kx`r|z^YtokCnQ_!l;ePJxTHr8#yKYB} zFZ^j;VzcO9tmkn}o83;?Ko2EUZmvPPIb7rITg4rGcT!DP?g)+0-JEYr<^O=!ZY8?t4X*2N|x_xrLnzmzl znAkGIy@QvbzY28L^U1lQO>Oz!=gcnck+Tc&vG(enf3Jlzv!%4oFa{PfvxH>(J{4>) z*<|YW#phHuzdy_4^m>|{>rUELp|fdPtf?*M@j0{K^(xuxv1()xU#)Ov4qMAc#{Dyy zSz=Nv{fJc~lIgD74QHv$rr;;cc7JDe>2Cu1=hlXPO}&ik!}y$8X^#b60sQeEnI$>f z6&yj59q;HWxHQMWPj!389FM{H+hZ8C(O2)7L@Xny=Ju;Qy5AXgkNezrzL7^^)UydDlEX zXSUm8L015OeBsOz8`+bMySYYYDbw_Td;mkHdAgmrP-XK7zV9TrR15ki!0UQG*)zh_ zmhXMetf$9(pLToFEw`8F`6HO8 zhMrIMT+z?_yXNvav$Gxxx&rv)Ju}PBGlscFW~pZxX-Z4x8ptKxp7x>&|IHKpiN*1% zEnkn(zXC!{*Gu;3Wn6RloY^*y1ziFB@r5&Uwn}SaTmqDt*^}e+<)DZ0<#ju8yb51; z9RK#<1-H~yo-w|edF*;V*|S_edu%eFGy7gIxWglWDc1jNnlm%~tqGZ#({Zon+^SQRsWE`L35jywJx^r!F@pPucW7NeJOP4PLiYa`VnpK0$3;Ey+FX8McfGP4Bx z(BUf7OZZ8;J#3NMLaUD9hrj&kHvm2(>BNq(BJThx+vl({=WoCBg0eu8NfxoWXF*>vOIy@s%%YEyA3;nyH zxM@RLrI&GiFrPDfP%rqTM*vqKUwom=Z0+*1@^!6GW~t5e9~tb6Z}0kpgB#WNbgU*% zb;`$Vv^nW-2z^Y`jvjOMD(`be#_}?n-`Vj-(!gR2Jj# zgLHf1W;Ja${+%uEtudee$^*m1y@TD;n&@R*AHnC$l06o51@On4Gt0EKZJpTKID#bD zQk=<-amT_%lOH2QJ(x~gn*C&i;aBaA5INgbTTbXr{|NYHn|oSEy^OH{FWzFt1F-f) zr!6(%Bny5BTVWN{I2=*|v zg~m`FhWAne&pZ?%KJI2!OjX2&*am{lhsiJ$+Cq=EO5oMJ2=Pa2t72-%WQcu3u-)(` zEQBY()=CL%$mV-&X;sYl*@ODdni8xIl!I8f*djs|8mM3qI*p1cr8NoKgN_YvzL5ox+@LY0)IGJEoEMJPL%=Qv& zBP@gGVI-6VX;&Q)qLkgLnCqy|P909LA8irhYxop4!Nawcz`2@yfa+GojEkEpvnL7G z2RcIzIN`y2mB5*MBE++mEQ;kCHHZ=$Pq1Fl339**zg18Iqsm8!3U^r*Gwz?M4Wu~1 zE|-lEXW$6D4T-lafo7#5#M5zB#ncrZV{05nu#V6K5}-7s-=qX4hw}kKtcn@WH>%7& zAlPb{2UB4XtP)C~&fnqUi|d~M>CM+mLE&bQ0_ih?PO%^x1Gx z4x}ZX2^T9)TNN{&Z$ykzZjKH%5kC~#!nSXf!1`~(#muh)7i(;DB(!g4Y#=JLi8|OQ zd>_bympy91f7}|1=)So5vn;-^(^;UD;aoL69mY1)?_|D)4e%s7Iu8W9`Ef)7JSXb!26G14udb+amF44Kqw{E%R4 zVIfR~!B8KhmF>!LvWrzQ<2Qp!tP;VZ;A-b^@dNCKGHsPWo!oFSD95T;2VL;68ru`B z0n~uo;d*wsD3+-NveG#lG_)v|qmTM>KbuUj0ni@Op(-4yuLL^YA1=b`Sru~~^%48I zE}J~O4;x_~lul6sFD0>qCs-A89rY1&5UdPD!8K>N_y)S$mB8sb;bM9%t768rE46`) zC0Gy0g$$?$m+w^qb*r$2R&q|=ug)p(_N2_AS zZ<&8QGRrSj_zw%@a78 zC6Cez_QrRDEcmjRS}>4TFEQgUn(NH=>%i~eH^K_IO-~DsnDL;w!=A(i@DLsN{LTFP z5BLOfK-$gtdu~!~Utc{k(|^%iXI5GVi^l)Oxcz77 zxTqthdVJ}HqWzCIJ`V;PXc2wx{2yV9?)Eyx7=uA)ip`mlWIy>(lz2NcQhW{vXiNK> zwzSArkz&S!sx9CDN&nCA<52gsn|c=BDZRx^gTdy*B1H!n3Xj7Kco_mUZ!yzgaQ5pe z@KXFb*a0W?v_J&C#Y}_2BP*5I8T@4keIrs-hCt0*Ob!P1clP9}NHG`I!cO=Ez65EL z-;5NmZSYUnTTBiHwb%>}giBxxd<@6nGDw@bB~rB9YE?`Q2DR9=?U5pGN2I6*^&ks+ zgS7ehtvjuXnFfPP--#5PU>|%97a;OoC9vb8Nb&j}t74|XV4nk#Vm!=))vyb`1ZfA3 zMT)6kS`;%62J4=P6m6g%jE6a}4y1*gWZ(PNs+b%M>hJ8(=}2)7Lcfa?w?JiR0Md4z zjTHBvvnnPBgIa9%kC9>p?0|jn75o9xMqP*$zx`}g%rqEm@oS{$0wZA(%!aif?bMY> zvFJ~$VsbF3Gt0UjDZ0ZLmuqq}8gIcVNh!WKx4RW9}i~?!XLZd`v zc;TbE(eW=YUPln)UnOa=ZZ}1V!SFQ9g=MfEq|Jzo64B9C#pGa6i}i?&5<}n_mOmg#hLJE6q@~!R#3s8{G1Fi$CLv0cgJft7`7juyJ)g=J zTF{wNVwpUodqpb7K`00h4>$*pYop2P+z!fOg!#@Gzlj#@J;Yy3iom#KPI=TwJ58n*hL2o_H z9K_dlbzg_MrF1EMk4H)EtB{<}l$pbQ#j$K+w0Ml*bK!Z~(spUFPX~P87z^@Z67&4dQXDa}qC{Cpgfz&7hagZhiRsMbz(Qv>bxxF+4;x?y z?1yh4Q1ccu4J;1n>k+5$7iD`-l&A=Snzxu~U{QLn3Vbg<3DTjbo)(Cpw^+fzBE|9U zz9?}7eu0qv97W(Rkhc5tC~@wPe_48q6$~s=9Q%)O@`P&;{Y8|x6OusMXWV0){U5O&9ZGx`CCWn`Xby&*j}kvzuqtL6 zSgiatO6-DTZ~;Ou@tuLR_`jmWo*Nd$%ma(D+&i8Ht6&!#hKnFAEi78>2v==mf)6iV z8%R#Uz#_$Q+s)CUI;2A$^n~#sEhH*hJRWUTtYBb~;y4r=EzW`{9xX~hIY6vvEm(PAmQ4SV1#_yeT1DIYC{ z%j>v)nD=*9FtA8*bgURH`oaWw4i>_HLE7HR(V}@3t77sllRoM%smeJDK87Q38vX`p z`)fptmbI*k71SV{JnKY@H{laF0;k{xNW0$=Ew(tVikSu$@k!C565IzZpd*X`Y1g>+ zezv|vG4sIU)wF1_4GzOOxDL0cD}ldTMvJZ4R>e#Mi+-)6#iK9>UWd2fGmti#I}5+( zS`{-5EV9~0i>~kpJOy)MJxDv)i7m8?RWZ}RqCvN4(Hi=~XqW=aKw86xqs6seR>cYi z7AcOEec9sRAbbNqL9u>HU;}JX^;T*!nM8> z+sA@m!xaeM5G`(nDiEld#Jp?$W}CAZt75v= zmtwPO#fVp6JM4uo;R;9_X^Rn;4p2c*R{h!Kv4R>gF!FU3lyv5!F`$c9cZ5~NMdU^i%NRZQ3V zQmkuJ&QCA}=DgF!FU7j&#E8N0G|Yh|uoa|TYaJsV$+aqGs`dBh z$B2_~6(ZZlh|=H$X`4H-r9NO$%v|gD>=7fz!fbdIw!k5fwyl2*Wt~+qQ>|ZZ2nS%u zgTivMQ!)eYrLEeuga$X2K$P13mz0L#D=vj?=7)=~`ckotv(LUBySwV3k4& zNc;3z&T%uXikWKtzh=jXTjs=wn$Q5+!Vr*_{xW_^z+#1KeVN%>{TGk7;y;2T@V%a9 zDEj&0bFII1xyoX%_I~OZvwNLlT+i^ZyEzBF7c1_0g%c(`KwDZL+R}!tjS+vm<6ezV z(f=6af99SxTQ6fQz>7(&aIG)JHnQM*@D=<3*C6JgJD4kouihl)UF+95L{`ua9)w{q z5dt-DF;lHSI$Eu|r|@%NIeeg}1tRDzW~%kK#wf8*@WLV!4cE7zWmO56^|8T zVK%%1>tGj1>sKmPOuyAXVeiaztuMuf-5x6@!^^N1cEB-^HnME2u$Qwc)=pgllw#jh zh!vNi_}#Ih0yrQGq>aNbsc2QqRO>%gIabVv4e%};gbN^Td5u^xqqbEsQ>~xvh!s8I zad;k9z%G!s>AqMoxV}X(bFE*#QLIRYR?rj1z#NcvCM{Mxm|;~+*ZT51+tN5z?1QuL z2ShfB6_r8SE6rj>#THh@bgeJNMrXx}sjwV2z&r32NbB4xRvc|@Rm@cD+wx*X8gzob zFdAlqv=2MPiV2;pis@QkX6ASxRy2mLFc_YI1t9HreCcjh#dNJN#cp(GAL|h-?u7(s z1f4$i9^R&<9kFdY`d+aPV( zv{=z?hE*}vpYiK{eq&K$CI?_hg)HatCD`E5hc+in34x>Oww9 z8}$-f=t8Svrdt2h%ba4M_~KY`7u19%Ano)koabJ(DyD0Fxix05WQ&7QFcD_LDv;Lh zjaboel~pla>r1iyt5vXX@E0L$O{^#f(%xFjIc~jGF;lI7YGbVU6H0EPScUtb9Z0LT zBUYT*8L(L4T3=>1=Uo+SDSj<%gME6Mq3Gv}&$a&2_muDk?fuj-X7{eH! z6g&qDVGZnnK+PoPUF(0FKvocy7$l@$M9RuS;ZD<1R;XxP<(#j2w6AefBw@SS;Q?5J|R>e%U{;3Ud;xZK97$@$6n$QHKjoln4lHRr|rfPj7v+uUWi9ey_b~Xk` zfEf4UZ-}km#Xbhd;4J(GCEig2mEU7Gc;Bj+s`U-AKX%87VjsqdyP-DJ zgSH^8$|rGR*&eH6s@6BeuI`Hyk^AFBMW_vRAs?j8{*)8yL91e>TEF+9I57rh!BSWc zdq7&7<7}y4TNE?b`ZrF-iBjLPGebkjg@GWg?fE!y%LS`qlvS=;|D9hr0K<6@7uf}% z8b~{U&$?t)%v9?yzZ@t21N-4?_z8;rt^}%IV+*}*Rm@cD&;6TI4D5mfa00G^v=<`c zMVp&d#br$J;l=CZ*-F*=#?}}T6))nUIwV5|bOmWq(edIE_+#E;s@6Beo{Uw&X5p8^ zf8bL+t#65VF*4q&n5ovETPj|xg7@JI_!**ZRRUj@ix=}M1T0pl);BV1T1f@V$M=B2 z@PwY`&+2o{>vOH2uS@BNJxXdJ#m#V{wR>7Q-kZ%N=2`2fI_tNI7unDYhQlP73xS$R%)8d#oEI-Xgp=?S z`~}7HgDGaJ^~0vB!14IMcMAuvl%3yxSpt)J?=I6YoO z%!n7|pbpf979j2Ntax$z9RF6ScV-2(eya1Yx$z?Ig?Ld7QlS|<1coh$7jG}LDppYI zr#kyCju+$LMOX=2;Rr~JToNy8EVU|Ts`cZS$BW8vKV(4{cm$-?ej{F#USn0vRO^4S zp5q}Ddox~?1sk*gX$`iuo#ikWNu*LTK?U2qJ3hVWhN0w8VhJM4S!S`{m(^;4Z0 zAH<9HFa(~2S+EAA)%l1s!pBy{3TpjSXV~6&aVyk@`=KTD0%>RV$BPF)wJK(+^|u_1 z7kl74_zl87XP*OUZH~r^*yC2k3TpjS=hm;{#Q``6S0VcAcu@tUjmIxNVO6Z4)=za# zImtc->tQ>50%t(lwNvZ{-&qwasP$8w`_IOU6YvK_d>=1LLM@Q?*AMYx%z3L~1+{*v z^V19Q;v4uAB7UaQf|?+$-$hQSzgiVD)%p!C$BWj`7e>PrSO(InU1LkVVNuLn>mLd! zDSm|T(30YIs1BJRtyWA)@k4Ck)4tL1FE3t4{Z^)0e_mWku@c^eBk&!FcqQ;EzVaklYjQjCKa;Z^t#d Date: Wed, 25 Jun 2014 22:02:53 +0200 Subject: [PATCH 22/23] Changeset: 335 fdbozzo - 25/06/2014 21:10:07: --- FoxBin2PRGVersionFile.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 278b9b2..97b9bad 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.24' - .VersionDate = Date(2014,06,15) + .VersionNumber = 'v1.19.25' + .VersionDate = Date(2014,06,25) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,6 +17,13 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2014/06/25 v1.19.25 +- When processing one or multiple files with vbs scripts, show a message indicating the status of the generation, and show the error log if any error occurs (Pedro Gutiérrez M.) +- Code cleaning and normalization +- ClearUniqueID is True by default for tx2 files +- OptimizeByTimestamp is False by default, to avoid possible automatic modifications made by VFP when opening a form or a classlib +- New AllowMultiConfig switch enabled by default, that allow a foxbin2prg.CFG file per directory, overriding main CFG (Mario Peschke) + 2014/06/15 v1.19.24 - Bug Fix scx/vcx: The absence of AGAIN keyword on some USE commands throws "tabla in use" error if used the PRG version from VFP command window (Matt Slay) - Bug Fix scx/vcx: A table field called "text" that begins the line can be confused with the TEXT/ENDTEXT structure and can wrong recognize the rest of the code (Mario Peschke) From 96efb15440666f4cafa814793c2a71e470368e96 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 25 Jun 2014 22:09:02 +0200 Subject: [PATCH 23/23] =?UTF-8?q?Changeset:=20338=20fdbozzo=20-=2025/06/20?= =?UTF-8?q?14=2022:05:26:=20-=20Actualizaci=C3=B3n=20de=20foxbin2prg.cfg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/foxbin2prg.cfg b/foxbin2prg.cfg index 0040927..76ed2b7 100644 --- a/foxbin2prg.cfg +++ b/foxbin2prg.cfg @@ -1,5 +1,5 @@ **************************************************************************************************** -* FOXBIN2PRG v1.19.9+ +* FOXBIN2PRG v1.19.25 * CONFIGURATION FILE / ARCHIVO DE CONFIGURACIÓN *--------------------------------------------------------------------------------------------------- * DON'T MODIFY THIS DOCUMENTATION SECTION / NO MODIFIQUE ESTA SECCIÓN DE DOCUMENTACIÓN @@ -13,7 +13,7 @@ * NoTimestamps: 1 && Crear timespampt by default for minimize differences / Vaciar Timestamps por defecto para minimizar diferencias * Debug: 0 && Don't Activate individual .Log by default / No Activar .Log por defecto * ExtraBackupLevels: 0 && By default 1 BAK is created. With this you can make more .N.BAK, or none / Por defecto 1 BAK es creado. Con esto puede crear más .N.BAK, o ninguno -* ClearUniqueID: 0 && EXPERIMENTAL! - 0=Keep UniqueID, 1=Clear Unique ID. Useful for Diff and Merge / 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge +* ClearUniqueID: 1 && 0=Keep UniqueID, 1=Clear Unique ID. Useful for Diff and Merge / 0=Mantener UniqueID, 1=Borrar Unique ID. Util para Diff y Merge * OptimizeByFilestamp: 0 && Optimize file regeneration depending on file timestamp / Optimizar la regeneración de archivos dependiendo del timestamp de archivo * AllowMultiConfig: 1 && 1=Allow CFG files per directory. if no CFG found, then use Main CFG. 0=Only use Main CFG * XXX_Conversion_Support: N && 0=No support, 1=Generate TXT only (Diff), 2=Generate TXT and BIN (Merge) @@ -50,12 +50,12 @@ * EN: Uncomment to activate the new value, comment to deactivate and use the default * ES: Descomente para activar el nuevo valor, comente para desactivarlo y usar el predeterminado *--------------------------------------------------------------------------------------------------- -*DontShowProgress: 0 +*DontShowProgress: 1 *DontShowErrors: 1 -*NoTimestamps: 1 +*NoTimestamps: 0 *Debug: 1 *ExtraBackupLevels: 3 -*ClearUniqueID: 1 +*ClearUniqueID: 0 *OptimizeByFilestamp: 0 *AllowMultiConfig: 0