From bbf0b40f6b511d65f85b7de4ee7d5fa7edfa7085 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 13 Apr 2015 01:57:25 +0200 Subject: [PATCH] =?UTF-8?q?-=20Mejora:=20Permitir=20generar=20texto=20de?= =?UTF-8?q?=20una=20clase=20de=20una=20librer=C3=ADa=20cuando=20se=20usa?= =?UTF-8?q?=20ClassPerFile=20(Lutz=20Scheffler)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + foxbin2prg.exe | Bin 574141 -> 571880 bytes foxbin2prg.prg | 61 ++++++++++++++++++++++++++++---------- 3 files changed, 46 insertions(+), 16 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 740cc2b..70f0208 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -47,6 +47,7 @@ Change History ------------------------------------------------------------- - Bug Fix scx/vcx/dbc: Delete ERR files when processing with UseClassPerFile switch (Ryan Harris) - Feature: Implemented CFG inheritance between directories - Feature (API): New method get_DirSettings() that returns the CFG settings object for the indicated directory (Lutz Scheffler) +- Feature: Allow generation of text for a single class of a librery when using ClassPerFile (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 1194350b9f45bf8cd9290f82d1cf3c323f9d5e4c..487407faf10a01113df131c9f36e1dc73a9d991b 100644 GIT binary patch delta 22957 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 * *--------------------------------------------------------------------------------------------------- @@ -235,6 +236,7 @@ * 24/03/2015 Ryan Harris Reporte bug frx/lbx v1.19.41: Hay algunos CR,LF,TAB sobrantes en las etiquetas tag de algunos archivos FR2/LB2 (Arreglado en v1.19.42) * 24/03/2015 Ryan Harris Mejora v1.19.41: Borrar archivos ERR al procesar, cuando se usa UseClassPerFile (Agregado en v1.19.42) * 10/04/2015 Lutz Scheffler Mejora v1.19.41: Crear un método API get_DirSettings() para obtener información de seteos del directorio indicado (Agregado en v1.19.42) +* 12/04/2015 Lutz Scheffler Mejora v1.19.41: Permitir generar texto de una clase de una librería (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -655,6 +657,7 @@ DEFINE CLASS c_foxbin2prg AS Session c_Foxbin2prg_ConfigFile = '' c_CurDir = '' c_InputFile = '' + c_ClassToConvert = '' && Guarda el nombre de la clase a convertir, indicada en tcInputFile como "archivo.vcx::clase" c_OriginalFileName = '' c_LogFile = ADDBS( SYS(2023) ) + 'FoxBin2Prg_Debug.LOG' c_ErrorLogFile = ADDBS( SYS(2023) ) + 'FoxBin2Prg_Error.LOG' @@ -2313,6 +2316,10 @@ DEFINE CLASS c_foxbin2prg AS Session lcInputFile_Type = '' + IF VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504 + ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC + ENDIF + IF .l_AutoClearProcessedFiles THEN .ClearProcessedFiles() && Para evitar acumular procesos anteriores ENDIF @@ -2329,12 +2336,14 @@ DEFINE CLASS c_foxbin2prg AS Session * EXIT *ENDIF - .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) - - IF VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504 - ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC + *-- Reconocimiento de la clase indicada + IF '::' $ tc_InputFile THEN + .c_ClassToConvert = LOWER( ALLTRIM( GETWORDNUM( tc_InputFile, 2, '::' ) ) ) + tc_InputFile = LOWER( ALLTRIM( GETWORDNUM( tc_InputFile, 1, '::' ) ) ) ENDIF + .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) + *-- Ajusto la ruta si no es absoluta tc_InputFile = .get_AbsolutePath( tc_InputFile, .c_CurDir ) @@ -3036,7 +3045,7 @@ DEFINE CLASS c_foxbin2prg AS Session ENDPROC - PROCEDURE Convertir + PROTECTED PROCEDURE Convertir *-------------------------------------------------------------------------------------------------------------- * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tc_InputFile (v! IN ) Nombre del archivo de entrada @@ -3428,7 +3437,9 @@ DEFINE CLASS c_foxbin2prg AS Session * RETORNO (@? OUT) Objeto CFG *--------------------------------------------------------------------------------------------------- LPARAMETERS tcDir - THIS.EvaluarConfiguracion( '', '', '', '', '', '', '', '', tcDir, 'D' ) + IF NOT EMPTY(tcDir) + THIS.EvaluarConfiguracion( '', '', '', '', '', '', '', '', tcDir, 'D' ) + ENDIF RETURN THIS.o_Configuration(THIS.n_CFG_Actual) ENDPROC @@ -13444,7 +13455,19 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg WITH THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS _TABLAORIG - SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN + + IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN + *-- Exportar la librería entera a texto + SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN + ELSE + *-- Exportar solo una clase a texto cuando se usa ClassPerFile y se indicó una clase + SELECT _TABLAORIG.*,RECNO() regnum FROM _TABLAORIG INTO CURSOR TABLABIN ; + WHERE PLATFORM == 'WINDOWS ' ; + AND ( PROPER(RESERVED1) == "Class" AND LOWER(OBJNAME) == toFoxBin2Prg.c_ClassToConvert ; + OR LOWER(parent) == toFoxBin2Prg.c_ClassToConvert ) ; + OR PLATFORM == 'COMMENT ' AND LOWER(OBJNAME) == toFoxBin2Prg.c_ClassToConvert + ENDIF + lnStepCount = 7 USE IN (SELECT("_TABLAORIG")) @@ -13463,15 +13486,17 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg *---------------------------------------------- SELECT TABLABIN SET ORDER TO PARENT_OBJ - GOTO RECORD 1 && Class Library Header/Form Header - SCATTER FIELDS RESERVED7 MEMO NAME loRegClass + IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN + GOTO RECORD 1 && Class Library Header/Form Header + SCATTER FIELDS RESERVED7 MEMO NAME loRegClass - IF NOT EMPTY(loRegClass.RESERVED7) THEN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <> <> <> - * - ENDTEXT + IF NOT EMPTY(loRegClass.RESERVED7) THEN + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> <> <> + * + ENDTEXT + ENDIF ENDIF COUNT ALL FOR UPPER( TABLABIN.PLATFORM ) = "WINDOWS" AND PROPER( TABLABIN.RESERVED1 ) == "Class" TO lnClassTotal @@ -13678,7 +13703,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ELSE DO CASE CASE toFoxBin2Prg.n_UseClassPerFile = 1 && LibName.ClassName.SC2 - .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + ENDIF FOR I = 1 TO lnClassCount lcOutputFile = ADDBS( JUSTPATH( .c_OutputFile ) ) + JUSTSTEM( .c_OutputFile ) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile ) @@ -13687,7 +13714,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ENDFOR CASE toFoxBin2Prg.n_UseClassPerFile = 2 && LibName.BaseClass.ClassName.SC2 - .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + IF toFoxBin2Prg.n_UseClassPerFile = 0 OR EMPTY(toFoxBin2Prg.c_ClassToConvert) THEN + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + ENDIF FOR I = 1 TO lnClassCount lcOutputFile = ADDBS( JUSTPATH( .c_OutputFile ) ) + JUSTSTEM( .c_OutputFile ) + '.' + laClasses(I,3) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile )