From ab97a5e7b196eda209a332a471483da4ea977aab Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 26 Oct 2014 14:54:15 +0100 Subject: [PATCH 01/18] =?UTF-8?q?Changeset:=20454=20fdbozzo=20-=2025/10/20?= =?UTF-8?q?14=2019:08:08:=20-=20Generaci=C3=B3n=20de=20VC2/SC2=20por=20cla?= =?UTF-8?q?se?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 300 ++++++++++++++++++++++++++++++------------------- 1 file changed, 184 insertions(+), 116 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1e10043..c1e16a0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -153,6 +153,7 @@ * 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opción tiene asociado un Procedure de 1 línea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33) * 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay algún archivo abierto o cacheado, se produce un error (solucionado en v1.19.34) * 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizaría los cambios al regenerarlos (Agregado en v1.19.35) +* 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo () * * *--------------------------------------------------------------------------------------------------- @@ -524,6 +525,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -587,6 +589,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_AllowMultiConfig = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. + l_UseFilePerClass = .F. l_NoTimestamps = .T. l_ClearUniqueID = .T. l_OptimizeByFilestamp = .F. @@ -729,6 +732,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + PROCEDURE l_UseFilePerClass_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_UseFilePerClass + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_UseFilePerClass, THIS.l_UseFilePerClass ) + 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 @@ -1258,6 +1270,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(lcValue) ) ENDIF + CASE LEFT( laConfig(I), 16 ) == LOWER('UseFilePerClass:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 17 ) ) + IF INLIST( lcValue, '0', '1' ) THEN + .l_UseFilePerClass = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > UseFilePerClass: ' + TRANSFORM(lcValue) ) + ENDIF + CASE LEFT( laConfig(I), 22 ) == LOWER('DropNullCharsFromCode:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 23 ) ) IF INLIST( lcValue, '0', '1' ) THEN @@ -1375,6 +1394,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' ) .writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) ) .writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) ) + .writeLog( '> l_UseFilePerClass: ' + TRANSFORM(.l_UseFilePerClass) ) .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) @@ -8332,6 +8352,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + [] @@ -9110,7 +9131,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_ADD_OBJECTS_WithProperties - LPARAMETERS toRegObj + LPARAMETERS toRegObj, tcCodigo #IF .F. LOCAL toRegObj AS CL_OBJETO OF 'FOXBIN2PRG.PRG' @@ -9125,40 +9146,40 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base IF '.' $ toRegObj.PARENT *-- Este caso: clase.objeto.objeto ==> se quita clase - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> ADD OBJECT '<>.<>' AS <> <<>> ENDTEXT ELSE *-- Este caso: objeto - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> ADD OBJECT '<>' AS <> <<>> ENDTEXT ENDIF IF NOT EMPTY(lcMemo) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <> ; <> ENDTEXT ENDIF - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <><> <<>> ENDTEXT IF NOT EMPTY(toRegObj.CLASSLOC) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 ClassLib="<>" <<>> ENDTEXT ENDIF - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 BaseClass="<>" <<>> ENDTEXT *-- Agrego metainformación para objetos OLE IF toRegObj.BASECLASS == 'olecontrol' - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 <<>> Nombre="<>" Parent="<>" ObjName="<>" @@ -9167,7 +9188,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT ENDIF - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <> <<>> ENDTEXT @@ -9186,7 +9207,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_ALL_OBJECT_METHODS - LPARAMETERS tcMethods, taMethods, taCode, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count, toFoxBin2Prg + LPARAMETERS tcMethods, taMethods, taCode, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ; + , taProtected, tnProtected_Count, toFoxBin2Prg, tcCodigo *-- Finalmente, todos los métodos los ordeno y escribo juntos LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods @@ -9213,7 +9235,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDFOR ENDWITH && THIS - C_FB2PRG_CODE = C_FB2PRG_CODE + lcMethods + tcCodigo = tcCodigo + lcMethods ENDIF RETURN @@ -9223,7 +9245,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_CLASS_PROPERTIES LPARAMETERS toRegClass, taPropsAndValues, taPropsAndComments, taProtected ; - , tnPropsAndValues_Count, tnPropsAndComments_Count, tnProtected_Count + , tnPropsAndValues_Count, tnPropsAndComments_Count, tnProtected_Count, tcCodigo EXTERNAL ARRAY taPropsAndValues, taPropsAndComments @@ -9289,28 +9311,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF ENDFOR - .write_DEFINED_PAM( @taPropsAndComments, tnPropsAndComments_Count ) + .write_DEFINED_PAM( @taPropsAndComments, tnPropsAndComments_Count, @tcCodigo ) - .write_HIDDEN_Properties( @lcHiddenProp ) + .write_HIDDEN_Properties( @lcHiddenProp, @tcCodigo ) - .write_PROTECTED_Properties( @lcProtectedProp ) + .write_PROTECTED_Properties( @lcProtectedProp, @tcCodigo ) *-- Escribo las propiedades de la clase y sus comentarios (los comentarios aquí son redundantes) FOR I = 1 TO ALEN(taPropsAndValues, 1) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> <> = <> ENDTEXT lnComment = ASCAN( taPropsAndComments, taPropsAndValues(I,1), 1, 0, 1, 1+8) IF lnComment > 0 AND NOT EMPTY(taPropsAndComments(lnComment,2)) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>> && <> ENDTEXT ENDIF ENDFOR - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> ENDTEXT ENDIF @@ -9331,7 +9353,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_DEFINED_PAM *-- Escribo propiedades DEFINED (Reserved3) en este formato: - LPARAMETERS taPropsAndComments, tnPropsAndComments_Count + LPARAMETERS taPropsAndComments, tnPropsAndComments_Count, tcCodigo * *m: *metodovacio_con_comentarios && Este método no tiene código, pero tiene comentarios. A ver que pasa! @@ -9347,7 +9369,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LOCAL I, lcPropsMethodsDefd, lcType lcPropsMethodsDefd = '' - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> <> ENDTEXT @@ -9362,27 +9384,27 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base , 'p' ) IF lcType == 'p' THEN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> *<>: <> ENDTEXT ELSE - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> *<>: <> ENDTEXT ENDIF IF NOT EMPTY(taPropsAndComments(I,2)) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>> <<'&'>><<'&'>> <> ENDTEXT ENDIF ENDFOR - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> <> ENDTEXT - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + tcCodigo = tcCodigo + CR_LF ENDIF @@ -9392,7 +9414,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_DEFINE_CLASS - LPARAMETERS ta_NombresObjsOle, toRegClass + LPARAMETERS ta_NombresObjsOle, toRegClass, tcCodigo LOCAL lcOF_Classlib, llOleObject lcOF_Classlib = '' @@ -9403,7 +9425,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF *-- DEFINICIÓN DE LA CLASE ( DEFINE CLASS 'className' AS 'classType' [OF 'classLib'] [OLEPUBLIC] ) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<'DEFINE CLASS'>> <> AS <> <> ENDTEXT @@ -9413,18 +9435,18 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_DEFINE_CLASS_COMMENTS - LPARAMETERS toRegClass + LPARAMETERS toRegClass, tcCodigo *-- Comentario de la clase IF NOT EMPTY(toRegClass.RESERVED7) THEN *-- Si es multilínea, debe ir en un tag aparte IF OCCURS( CHR(13), toRegClass.RESERVED7 ) > 0 THEN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> <> <> <<>> <> ENDTEXT ELSE && Comentario in-line - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 <<>> <<'&'+'&'>> <> ENDTEXT ENDIF @@ -9436,9 +9458,9 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_ENDDEFINE_SiCorresponde - LPARAMETERS tnLastClass + LPARAMETERS tnLastClass, tcCodigo IF tnLastClass = 1 - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<'ENDDEFINE'>> <<>> ENDTEXT @@ -9450,10 +9472,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_INCLUDE - LPARAMETERS toReg + LPARAMETERS toReg, tcCodigo *-- #INCLUDE IF NOT EMPTY(toReg.RESERVED8) THEN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> #INCLUDE "<>" ENDTEXT ENDIF @@ -9464,14 +9486,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_CLASSMETADATA - LPARAMETERS toRegClass + LPARAMETERS toRegClass, tcCodigo *-- Agrego Metadatos de la clase (Baseclass, Timestamp, Scale, Uniqueid) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> ENDTEXT - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 <<>> <> Baseclass="<>" Timestamp="<>" @@ -9480,7 +9502,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTEXT IF NOT EMPTY(toRegClass.OLE2) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 <<>> Nombre="<>" Parent="<>" ObjName="<>" @@ -9490,22 +9512,22 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF IF NOT EMPTY(toRegClass.RESERVED5) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 ProjectClassIcon="<>" ENDTEXT ENDIF IF NOT EMPTY(toRegClass.RESERVED4) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 ClassIcon="<>" ENDTEXT ENDIF - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 <> ENDTEXT - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + tcCodigo = tcCodigo + CR_LF RETURN ENDPROC @@ -9513,11 +9535,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_OBJECTMETADATA - LPARAMETERS toRegObj + LPARAMETERS toRegObj, tcCodigo LOCAL lcNombre *-- Agrego Metadatos de los objetos (Timestamp, UniqueID) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> ENDTEXT @@ -9529,14 +9551,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lcNombre = toRegObj.OBJNAME ENDIF - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8 <<>> <> ObjPath="<>" UniqueID="<>" Timestamp="<>" ENDTEXT - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2+4+8 <> ENDTEXT @@ -9547,10 +9569,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_HIDDEN_Properties *-- Escribo la definición HIDDEN de propiedades - LPARAMETERS tcHiddenProp + LPARAMETERS tcHiddenProp, tcCodigo IF NOT EMPTY(tcHiddenProp) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> HIDDEN <> ENDTEXT ENDIF @@ -9562,10 +9584,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_PROTECTED_Properties *-- Escribo la definición PROTECTED de propiedades - LPARAMETERS tcProtectedProp + LPARAMETERS tcProtectedProp, tcCodigo IF NOT EMPTY(tcProtectedProp) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> PROTECTED <> ENDTEXT ENDIF @@ -9975,6 +9997,25 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDPROC + + PROCEDURE write_OutputFile + LPARAMETERS tcCodigo, tcOutputFile, toFoxBin2Prg + + DO CASE + CASE FILE(tcOutputFile) AND FILETOSTR( tcOutputFile ) == tcCodigo + *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) + THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) + + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) ; + AND STRTOFILE( tcCodigo, tcOutputFile ) = 0 + *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' + ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) + ENDCASE + ENDPROC + + + ******************************************************************************************************************* PROCEDURE FixOle2Fields ******************************************************************************************************************* @@ -10067,10 +10108,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg TRY LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ; - , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count + , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count, lcCodigo, laClasses(1,2) ; + , lnClassCount, lcOutputFile STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; - , lnMethodCount - STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs + , lnMethodCount, lnClassCount + STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile STORE NULL TO loRegClass, loRegObj WITH THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' @@ -10085,8 +10127,6 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - .write_DefinicionObjetosOLE( toFoxBin2Prg ) - *-- Escribo los métodos ordenados lnLastClass = 0 @@ -10109,7 +10149,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" STORE 0 TO lnMethodCount - STORE '' TO laMethods, laCode + STORE '' TO laMethods, laCode, lcCodigo + lnClassCount = lnClassCount + 1 + DIMENSION laClasses(lnClassCount,2) loRegClass = NULL SCATTER MEMO NAME loRegClass @@ -10124,14 +10166,13 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ENDIF lcObjName = ALLTRIM(loRegClass.OBJNAME) + laClasses(lnClassCount,1) = LOWER(lcObjName) - .write_ENDDEFINE_SiCorresponde( lnLastClass ) + .write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass, @lcCodigo ) - .write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) + .write_DEFINE_CLASS_COMMENTS( @loRegClass, @lcCodigo ) - .write_DEFINE_CLASS_COMMENTS( @loRegClass ) - - .write_CLASSMETADATA( @loRegClass ) + .write_CLASSMETADATA( @loRegClass, @lcCodigo ) *------------------------------------------------------------------------------- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN @@ -10165,24 +10206,24 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ASORT(laObjs, 2, -1, 0, 0) && Orden por ZOrder IF lnObjCount > 0 - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + ' *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder ' + lcCodigo = lcCodigo + CR_LF + ' *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder ' FOR I = 1 TO lnObjCount - .write_OBJECTMETADATA( laObjs(I,1) ) + .write_OBJECTMETADATA( laObjs(I,1), @lcCodigo ) ENDFOR - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + lcCodigo = lcCodigo + CR_LF ENDIF - .write_INCLUDE( @loRegClass ) + .write_INCLUDE( @loRegClass, @lcCodigo ) .write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ; - , @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count ) + , @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count, @lcCodigo ) ASORT(laObjs, 3, -1, 0, 0) && Orden Alfabético (del SCAN original) FOR I = 1 TO lnObjCount - .write_ADD_OBJECTS_WithProperties( laObjs(I,1) ) + .write_ADD_OBJECTS_WithProperties( laObjs(I,1), @lcCodigo ) ENDFOR @@ -10224,28 +10265,40 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ENDSCAN .write_ALL_OBJECT_METHODS( @lcMethods, @laMethods, @laCode, @lnMethodCount, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; - , lnProtected_Count, @toFoxBin2Prg ) + , lnProtected_Count, @toFoxBin2Prg, @lcCodigo ) GOTO RECORD (lnRecno) + .write_ENDDEFINE_SiCorresponde( lnLastClass, @lcCodigo ) + laClasses(lnClassCount,2) = lcCodigo ENDSCAN - .write_ENDDEFINE_SiCorresponde( lnLastClass ) - *-- Genero el VC2 + lcOutputFile = .c_OutputFile + lcCodigo = C_FB2PRG_CODE + IF .l_Test - toModulo = C_FB2PRG_CODE + FOR I = 1 TO lnClassCount + lcCodigo = lcCodigo + laClasses(I,2) + ENDFOR + toModulo = lcCodigo ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + IF toFoxBin2Prg.l_UseFilePerClass + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + + FOR I = 1 TO lnClassCount + .c_OutputFile = FORCEPATH( JUSTSTEM( lcOutputFile ), JUSTPATH( lcOutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( lcOutputFile ) + lcCodigo = laClasses(I,2) + .write_OutputFile( @lcCodigo, .c_OutputFile, @toFoxBin2Prg ) + ENDFOR + + .c_OutputFile = lcOutputFile + ELSE + FOR I = 1 TO lnClassCount + lcCodigo = lcCodigo + laClasses(I,2) + ENDFOR + + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + ENDIF ENDIF ENDWITH && THIS @@ -10262,7 +10315,8 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg STORE NULL TO loRegClass, loRegObj RELEASE lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods, laCode, laProtected, lnLen, lnObjCount ; , laPropsAndValues, laPropsAndComments, lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle ; - , laObjs, I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count + , laObjs, I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; + , lcCodigo, laClasses, lnClassCount, lcOutputFile ENDTRY @@ -10296,10 +10350,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg TRY LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ; - , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count + , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count, lcCodigo, laClasses(1,2) ; + , lnClassCount, lcOutputFile STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; - , lnMethodCount - STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs + , lnMethodCount, lnClassCount + STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile STORE NULL TO loRegClass, loRegObj WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' @@ -10314,8 +10369,6 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - .write_DefinicionObjetosOLE( toFoxBin2Prg ) - *-- Escribo los métodos ordenados lnLastObj = 0 lnLastClass = 0 @@ -10351,7 +10404,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) STORE 0 TO lnMethodCount - STORE '' TO laMethods, laCode + STORE '' TO laMethods, laCode, lcCodigo + lnClassCount = lnClassCount + 1 + DIMENSION laClasses(lnClassCount,2) loRegClass = NULL SCATTER MEMO NAME loRegClass @@ -10366,14 +10421,13 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg ENDIF lcObjName = ALLTRIM(loRegClass.OBJNAME) + laClasses(lnClassCount,1) = LOWER(lcObjName) - .write_ENDDEFINE_SiCorresponde( lnLastClass ) + .write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass, @lcCodigo ) - .write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) + .write_DEFINE_CLASS_COMMENTS( @loRegClass, @lcCodigo ) - .write_DEFINE_CLASS_COMMENTS( @loRegClass ) - - .write_CLASSMETADATA( @loRegClass ) + .write_CLASSMETADATA( @loRegClass, @lcCodigo ) *------------------------------------------------------------------------------- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN @@ -10407,25 +10461,25 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg ASORT(laObjs, 2, -1, 0, 0) && Orden por ZOrder IF lnObjCount > 0 - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + ' *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder ' + lcCodigo = lcCodigo + CR_LF + ' *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder ' FOR I = 1 TO lnObjCount - .write_OBJECTMETADATA( laObjs(I,1) ) + .write_OBJECTMETADATA( laObjs(I,1), @lcCodigo ) ENDFOR - C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + lcCodigo = lcCodigo + CR_LF ENDIF - .write_INCLUDE( @loRegClass ) + .write_INCLUDE( @loRegClass, @lcCodigo ) .write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ; - , @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count ) + , @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count, @lcCodigo ) ASORT(laObjs, 3, -1, 0, 0) && Orden Alfabético de objetos (del SCAN original) FOR I = 1 TO lnObjCount - .write_ADD_OBJECTS_WithProperties( laObjs(I,1) ) + .write_ADD_OBJECTS_WithProperties( laObjs(I,1), @lcCodigo ) ENDFOR @@ -10469,28 +10523,39 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg ENDSCAN .write_ALL_OBJECT_METHODS( @lcMethods, @laMethods, @laCode, @lnMethodCount, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; - , lnProtected_Count, @toFoxBin2Prg ) + , lnProtected_Count, @toFoxBin2Prg, @lcCodigo ) GOTO RECORD (lnRecno) + .write_ENDDEFINE_SiCorresponde( lnLastClass, @lcCodigo ) + laClasses(lnClassCount,2) = lcCodigo ENDSCAN - .write_ENDDEFINE_SiCorresponde( lnLastClass ) - *-- Genero el SC2 + lcOutputFile = .c_OutputFile + lcCodigo = C_FB2PRG_CODE + IF .l_Test - toModulo = C_FB2PRG_CODE + FOR I = 1 TO lnClassCount + lcCodigo = lcCodigo + laClasses(I,2) + ENDFOR + toModulo = lcCodigo ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + IF toFoxBin2Prg.l_UseFilePerClass + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + + FOR I = 1 TO lnClassCount + .c_OutputFile = FORCEPATH( JUSTSTEM( lcOutputFile ), JUSTPATH( lcOutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( lcOutputFile ) + lcCodigo = laClasses(I,2) + .write_OutputFile( @lcCodigo, .c_OutputFile, @toFoxBin2Prg ) + ENDFOR + + ELSE + FOR I = 1 TO lnClassCount + lcCodigo = lcCodigo + laClasses(I,2) + ENDFOR + + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) + ENDIF ENDIF ENDWITH && THIS @@ -10507,7 +10572,8 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg STORE NULL TO loRegClass, loRegObj RELEASE lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods, laCode, laProtected, lnLen, lnObjCount ; , laPropsAndValues, laPropsAndComments, lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle ; - , laObjs, I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count + , laObjs, I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; + , lcCodigo, laClasses, lnClassCount, lcOutputFile ENDTRY @@ -19992,6 +20058,7 @@ DEFINE CLASS CL_CFG AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -20020,6 +20087,7 @@ DEFINE CLASS CL_CFG AS CUSTOM l_NoTimestamps = NULL l_ClearUniqueID = NULL l_OptimizeByFilestamp = NULL + l_UseFilePerClass = NULL n_ExtraBackupLevels = NULL c_VC2 = NULL c_SC2 = NULL From 797d67a5ff68177d63986b14fd35822ca0d5e774 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 26 Oct 2014 14:55:08 +0100 Subject: [PATCH 02/18] =?UTF-8?q?Changeset:=20455=20fdbozzo=20-=2026/10/20?= =?UTF-8?q?14=2014:54:16:=20-=20Librer=C3=ADa=20de=20Clases=20de=20ejemplo?= =?UTF-8?q?=20fb2p=5Ftest.vcx=20actualizada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/fb2p_test.vc2 | 13 +++++++++++-- TESTS/DATOS_READONLY/fb2p_test.vct | Bin 83582 -> 86861 bytes TESTS/DATOS_READONLY/fb2p_test.vcx | Bin 6373 -> 7028 bytes 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/TESTS/DATOS_READONLY/fb2p_test.vc2 b/TESTS/DATOS_READONLY/fb2p_test.vc2 index 18ff8b2..63801db 100644 --- a/TESTS/DATOS_READONLY/fb2p_test.vc2 +++ b/TESTS/DATOS_READONLY/fb2p_test.vc2 @@ -138,7 +138,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL Option2.Top = 8, ; Option2.Width = 104 *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="optiongroup" /> - + PROCEDURE Cl_optiongroup1.Init *-- Prueba para comprobar que respeta espacios y TABS del código TEXT TO xx @@ -171,8 +171,17 @@ DEFINE CLASS cl_imagen AS image OLEPUBLIC && otro ole ENDDEFINE +DEFINE CLASS cl_olebound AS oleboundcontrol + *< CLASSDATA: Baseclass="oleboundcontrol" Timestamp="" Scale="Pixels" Uniqueid="" /> + + Height = 100 + Name = "cl_olebound" + Width = 100 + +ENDDEFINE + DEFINE CLASS cl_olecontrol AS olecontrol - *< CLASSDATA: Baseclass="olecontrol" Timestamp="" Scale="Pixels" Uniqueid="" Nombre="cl_olecontrol" Parent="" ObjName="cl_olecontrol" OLEObject="C:\Windows\system32\richtx32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDfG05c8M4BAwAAAAACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEoAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAD+////BwAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYAoAAAAAAA//8AAP//AQAAAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADAAAAFJpZ2h0TWFyZ2luABEAAABODQAAAAcAAAAAAAAAAAAAAAUAAABUZXh0ABQAAABIAAAAAAsAAABPAAAAAAUAAIAAAAAAAAABAAAAAQABAAIACAAAAHtccnRmMVxhbnNpXGRlZmYwe1xmb250dGJse1xmMFxmbmlsXGxlY29udHJvbDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" /> + *< CLASSDATA: Baseclass="olecontrol" Timestamp="" Scale="Pixels" Uniqueid="" Nombre="cl_olecontrol" Parent="" ObjName="cl_olecontrol" OLEObject="C:\Windows\system32\richtx32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCpJ18M8c8BAwAAAAACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEoAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAD+////BwAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP//AQAAAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADAAAAFJpZ2h0TWFyZ2luABEAAABODQAAAAcAAAAAAAAAAAAAAAUAAABUZXh0ABQAAABIAAAAAAsAAABPAAAAAAUAAIAAAAAAAAABAAAAAQABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dGxlY29udHJvbDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" /> Height = 67 Name = "cl_olecontrol" diff --git a/TESTS/DATOS_READONLY/fb2p_test.vct b/TESTS/DATOS_READONLY/fb2p_test.vct index b6955e7b017f4ecc6609646e2f012c4fa4831fce..30bcaa6664706e4bc04525ea3458de2fcecf1116 100644 GIT binary patch delta 549 zcmey@!+LfZD?0;Yuqy)t!(_!Ev5g9k87E&5W^ZO^+Ro0zSne`8Aep_MKR+imDZex? zB{@H@q$ocJsF)FmaR_rK=fuM_Kvf!gq-LgPlqlFL7#bMxa)oE6lw`m-eu=rMK(-Q+ zE+t+rs7A0^>QLM9TgzxTIe=MY@^x>%dMqx$;Z_{NSPUS+3s#_@Lh}QOUf@A?!Q?XWxJS#B2O%wu5}Sg9V*^YQ%THr`go8=HCf^qCpgOtumHuauZqoS9sZZfIm` z6qAygmS#{LlLm~llAKg%)EQ0`G~-Fi0SX($q~&Gi#7v$nR6etqK$uE~+C$&*(IYA$}tDh%XvYnU4vx>%YRIT{+88Jn6K zn46n%yE8I?z*ILzh95u-0{h)2UlbP;*9J-{L8ZasK*GYEaq?_IGbT58pc1Re0?Ztf z{aLv*P0$UtFnI>mSpcLjL)o)Hy2QlUJQx}Nq8Tjg!8mz6s~MA`2a>^}-e6~17?}SG pf;i0$sP!q7oeN|mgXKW}dZ3(WFe3vG5F-PnV2JSs!7$?)r2yb!I4uAG delta 30 mcmexj_SBHofRB~Sa3iZ1>*W2CT$3YNlPBv)X)b=sDhvRT&j~aD From 8abb4f215cd1547e554a3683c3416c39095d23de Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 26 Oct 2014 15:42:59 +0100 Subject: [PATCH 03/18] Changeset: 456 fdbozzo - 26/10/2014 14:55:10: - Ensamblado de archivos VC2/SC2 multiparte en uno solo --- foxbin2prg.prg | 46 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index c1e16a0..388aef9 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -5879,16 +5879,28 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin DODEFAULT( @toModulo, @toEx ) TRY - LOCAL lnCodError, lcLine, laCodeLines(1), lnCodeLines ; + LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lnFileCount, laFiles(1,5) ; , laLineasExclusion(1), lnBloquesExclusion, I WITH THIS AS c_conversor_prg_a_vcx OF 'FOXBIN2PRG.PRG' STORE 0 TO lnCodError, lnCodeLines - STORE '' TO lcLine + STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo - C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) - lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + + IF toFoxBin2Prg.l_UseFilePerClass + *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes + lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) + lnFileCount = ADIR( laFiles, lcInputFile ) + ASORT( laFiles, 1, 0, 0, 1) + + FOR I = 1 TO lnFileCount + C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) ) + ENDFOR + ENDIF + + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) @@ -5914,7 +5926,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) - RELEASE lnCodError, lcLine, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I + RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; + , lcInputFile, lnFileCount, laFiles ENDTRY RETURN @@ -6183,14 +6196,27 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin DODEFAULT( @toModulo, @toEx ) TRY - LOCAL lnCodError, laCodeLines(1), lnCodeLines, lnFB2P_Version ; + LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lnFileCount, laFiles(1,5) ; , laLineasExclusion(1), lnBloquesExclusion, I WITH THIS AS c_conversor_prg_a_scx OF 'FOXBIN2PRG.PRG' - STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version + STORE 0 TO lnCodError, lnCodeLines + STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo - C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + + IF toFoxBin2Prg.l_UseFilePerClass + *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes + lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) + lnFileCount = ADIR( laFiles, lcInputFile ) + ASORT( laFiles, 1, 0, 0, 1) + + FOR I = 1 TO lnFileCount + C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) ) + ENDFOR + ENDIF + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) @@ -6217,6 +6243,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) + RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; + , lcInputFile, lnFileCount, laFiles ENDTRY RETURN @@ -7279,7 +7307,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin #ENDIF TRY - LOCAL lnCodError, loEx AS EXCEPTION, laCodeLines(1), lnCodeLines, lnFB2P_Version ; + LOCAL lnCodError, loEx AS EXCEPTION, laCodeLines(1), lnCodeLines ; , laLineasExclusion(1), lnBloquesExclusion, I WITH THIS AS c_conversor_prg_a_frx OF 'FOXBIN2PRG.PRG' From c277e62875808434f12d992593ba1e6f3576c43c Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 28 Oct 2014 20:29:02 +0100 Subject: [PATCH 04/18] =?UTF-8?q?Changeset:=20457=20fdbozzo=20-=2026/10/20?= =?UTF-8?q?14=2015:43:01:=20-=20Cr=C3=A9ditos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 388aef9..6f6d7d8 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -153,7 +153,8 @@ * 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opción tiene asociado un Procedure de 1 línea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33) * 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay algún archivo abierto o cacheado, se produce un error (solucionado en v1.19.34) * 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizaría los cambios al regenerarlos (Agregado en v1.19.35) -* 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo () +* 21/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta) +* 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo (sugerencia) * * *--------------------------------------------------------------------------------------------------- From a8fab054e5990af1ab9d024f673ecaa608ced473 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 3 Nov 2014 22:38:43 +0100 Subject: [PATCH 05/18] =?UTF-8?q?Changeset:=20461=20fdbozzo=20-=2002/11/20?= =?UTF-8?q?14=2019:36:59:=20-=20Renombrado=20de=20FilePerClass=20a=20Class?= =?UTF-8?q?PerFile,=20que=20es=20l=C3=A9xicamente=20m=C3=A1s=20correcto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 6f6d7d8..85069c6 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -153,7 +153,7 @@ * 28/08/2014 Peter Hipp REPORTE BUG mnx v1.19.32: Si una opción tiene asociado un Procedure de 1 línea, no se mantiene como Procedure y se convierte a Command (solucionado en v1.19.33) * 19/09/2014 Jim Nelson REPORTE BUG v1.19.33: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay algún archivo abierto o cacheado, se produce un error (solucionado en v1.19.34) * 26/09/2014 Marcio Gomez G. MEJORA v1.19.34: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizaría los cambios al regenerarlos (Agregado en v1.19.35) -* 21/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta) +* 14/10/2014 Lutz Scheffler MEJORA v1.19.36: Permitir generar una clase por archivo (pregunta) * 21/10/2014 Ryan Harris MEJORA v1.19.36: Permitir generar una clase por archivo (sugerencia) * * @@ -526,7 +526,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; - + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -590,7 +590,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_AllowMultiConfig = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. - l_UseFilePerClass = .F. + l_UseClassPerFile = .F. l_NoTimestamps = .T. l_ClearUniqueID = .T. l_OptimizeByFilestamp = .F. @@ -733,11 +733,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC - PROCEDURE l_UseFilePerClass_ACCESS + PROCEDURE l_UseClassPerFile_ACCESS IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) - RETURN THIS.l_UseFilePerClass + RETURN THIS.l_UseClassPerFile ELSE - RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_UseFilePerClass, THIS.l_UseFilePerClass ) + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_UseClassPerFile, THIS.l_UseClassPerFile ) ENDIF ENDPROC @@ -1271,11 +1271,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(lcValue) ) ENDIF - CASE LEFT( laConfig(I), 16 ) == LOWER('UseFilePerClass:') + CASE LEFT( laConfig(I), 16 ) == LOWER('UseClassPerFile:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 17 ) ) IF INLIST( lcValue, '0', '1' ) THEN - .l_UseFilePerClass = ( TRANSFORM(lcValue) == '1' ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > UseFilePerClass: ' + TRANSFORM(lcValue) ) + .l_UseClassPerFile = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > UseClassPerFile: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 22 ) == LOWER('DropNullCharsFromCode:') @@ -1395,7 +1395,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( '> l_Recompile: ' + TRANSFORM(.l_Recompile) + ' (' + EVL(tcRecompile,'') + ')' ) .writeLog( '> l_NoTimestamps: ' + TRANSFORM(.l_NoTimestamps) ) .writeLog( '> l_ClearUniqueID: ' + TRANSFORM(.l_ClearUniqueID) ) - .writeLog( '> l_UseFilePerClass: ' + TRANSFORM(.l_UseFilePerClass) ) + .writeLog( '> l_UseClassPerFile: ' + TRANSFORM(.l_UseClassPerFile) ) .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) @@ -5890,7 +5890,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) - IF toFoxBin2Prg.l_UseFilePerClass + IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) lnFileCount = ADIR( laFiles, lcInputFile ) @@ -6207,7 +6207,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) - IF toFoxBin2Prg.l_UseFilePerClass + IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) lnFileCount = ADIR( laFiles, lcInputFile ) @@ -10311,7 +10311,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg ENDFOR toModulo = lcCodigo ELSE - IF toFoxBin2Prg.l_UseFilePerClass + IF toFoxBin2Prg.l_UseClassPerFile .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) FOR I = 1 TO lnClassCount @@ -10569,7 +10569,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg ENDFOR toModulo = lcCodigo ELSE - IF toFoxBin2Prg.l_UseFilePerClass + IF toFoxBin2Prg.l_UseClassPerFile .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) FOR I = 1 TO lnClassCount @@ -20087,7 +20087,7 @@ DEFINE CLASS CL_CFG AS CUSTOM + [] ; + [] ; + [] ; - + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -20116,7 +20116,7 @@ DEFINE CLASS CL_CFG AS CUSTOM l_NoTimestamps = NULL l_ClearUniqueID = NULL l_OptimizeByFilestamp = NULL - l_UseFilePerClass = NULL + l_UseClassPerFile = NULL n_ExtraBackupLevels = NULL c_VC2 = NULL c_SC2 = NULL From ef5ee5a187ef6c699fd68259cb0bc2660ea281cf Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 3 Nov 2014 23:58:57 +0100 Subject: [PATCH 06/18] =?UTF-8?q?Changeset:=20462=20fdbozzo=20-=2003/11/20?= =?UTF-8?q?14=2022:38:45:=20-=20Normalizaci=C3=B3n=20del=20m=C3=A9todo=20d?= =?UTF-8?q?oBackup()=20-=20Normalizaci=C3=B3n=20del=20m=C3=A9todo=20normal?= =?UTF-8?q?izarCapitalizacionArchivos()=20-=20Encapsulaci=C3=B3n=20de=20fu?= =?UTF-8?q?ncionalidad=20en=20m=C3=A9todo=20write=5FOutputFile()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 276 ++++++++++++++++++------------------------------- 1 file changed, 101 insertions(+), 175 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 85069c6..74689ca 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -1059,23 +1059,26 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * 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) * tcBakFile_2 (@? OUT) Nombre del archivo backup 2 (vct,sct,pjt,frt,lbt,fpt,dct,mnt,etc) - * tcBakFile_3 (@? OUT) Nombre del archivo backup 1 (vcx,scx,pjx,cdx,dcx,etc) + * tcBakFile_3 (@? OUT) Nombre del archivo backup 3 (cdx,dcx,etc) + * tcOutputFile (v? IN ) Nombre del archivo de salida. Si no se indica se asume .c_OutputFile *--------------------------------------------------------------------------------------------------- - LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3 + LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3, tcOutputFile #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY - LOCAL lcNext_Bak, lcExt_1, lcExt_2, lcExt_3 - STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3 + LOCAL lcNext_Bak, lcExt_1, lcExt_2, lcExt_3, tcOutputFile_Ext1, tcOutputFile_Ext2, tcOutputFile_Ext3 + STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3, lcExt_1, lcExt_2, lcExt_3 ; + , tcOutputFile_Ext1, tcOutputFile_Ext2, tcOutputFile_Ext3 WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' IF .n_ExtraBackupLevels > 0 THEN - lcNext_Bak = .getNext_BAK( .c_OutputFile ) - lcExt_1 = JUSTEXT( .c_OutputFile ) - tcBakFile_1 = FORCEEXT(.c_OutputFile, lcExt_1 + lcNext_Bak) + tcOutputFile = EVL( tcOutputFile, .c_OutputFile ) + lcNext_Bak = .getNext_BAK( tcOutputFile ) + lcExt_1 = JUSTEXT( tcOutputFile ) + tcBakFile_1 = FORCEEXT(tcOutputFile, lcExt_1 + lcNext_Bak) DO CASE CASE INLIST( lcExt_1, .c_PJ2, .c_VC2, .c_SC2, .c_FR2, .c_LB2, .c_DB2, .c_DC2, .c_MN2, 'PJM' ) @@ -1085,43 +1088,55 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- DBF lcExt_2 = 'FPT' lcExt_3 = 'CDX' - tcBakFile_2 = FORCEEXT(.c_OutputFile, lcExt_2 + lcNext_Bak) - tcBakFile_3 = FORCEEXT(.c_OutputFile, lcExt_3 + lcNext_Bak) + tcBakFile_2 = FORCEEXT(tcOutputFile, lcExt_2 + lcNext_Bak) + tcBakFile_3 = FORCEEXT(tcOutputFile, lcExt_3 + lcNext_Bak) CASE lcExt_1 = 'DBC' *-- DBC lcExt_2 = 'DCT' lcExt_3 = 'DCX' - tcBakFile_2 = FORCEEXT(.c_OutputFile, lcExt_2 + lcNext_Bak) - tcBakFile_3 = FORCEEXT(.c_OutputFile, lcExt_3 + lcNext_Bak) + tcBakFile_2 = FORCEEXT(tcOutputFile, lcExt_2 + lcNext_Bak) + tcBakFile_3 = FORCEEXT(tcOutputFile, lcExt_3 + lcNext_Bak) OTHERWISE *-- PJX, VCX, SCX, FRX, LBX, MNX lcExt_2 = LEFT(lcExt_1,2) + 'T' - tcBakFile_2 = FORCEEXT(.c_OutputFile, lcExt_2 + lcNext_Bak) + tcBakFile_2 = FORCEEXT(tcOutputFile, lcExt_2 + lcNext_Bak) ENDCASE - IF NOT EMPTY(lcExt_1) AND FILE( FORCEEXT(.c_OutputFile, lcExt_1) ) - *-- LOG - DO CASE - CASE EMPTY(lcExt_2) - .writeLog( C_BACKUP_OF_LOC + FORCEEXT(.c_OutputFile,lcExt_1) ) - CASE EMPTY(lcExt_3) - .writeLog( C_BACKUP_OF_LOC + FORCEEXT(.c_OutputFile,lcExt_1) + '/' + lcExt_2 ) - OTHERWISE - .writeLog( C_BACKUP_OF_LOC + FORCEEXT(.c_OutputFile,lcExt_1) + '/' + lcExt_2 + '/' + lcExt_3 ) - ENDCASE + IF NOT EMPTY(lcExt_1) + tcOutputFile_Ext1 = FORCEEXT(tcOutputFile, lcExt_1) - *-- COPIA BACKUP - COPY FILE ( FORCEEXT(.c_OutputFile, lcExt_1) ) TO ( tcBakFile_1 ) + IF FILE( tcOutputFile_Ext1 ) + *-- LOG + DO CASE + CASE EMPTY(lcExt_2) + .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 ) + CASE EMPTY(lcExt_3) + .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 ) + OTHERWISE + .writeLog( C_BACKUP_OF_LOC + tcOutputFile_Ext1 + '/' + lcExt_2 + '/' + lcExt_3 ) + ENDCASE - IF NOT EMPTY(lcExt_2) AND FILE( FORCEEXT(.c_OutputFile, lcExt_2) ) - COPY FILE ( FORCEEXT(.c_OutputFile, lcExt_2) ) TO ( tcBakFile_2 ) - ENDIF + *-- COPIA BACKUP + COPY FILE ( tcOutputFile_Ext1 ) TO ( tcBakFile_1 ) - IF NOT EMPTY(lcExt_3) AND FILE( FORCEEXT(.c_OutputFile, lcExt_3) ) - COPY FILE ( FORCEEXT(.c_OutputFile, lcExt_3) ) TO ( tcBakFile_3 ) + IF NOT EMPTY(lcExt_2) + tcOutputFile_Ext2 = FORCEEXT(tcOutputFile, lcExt_2) + + IF FILE( tcOutputFile_Ext2 ) + COPY FILE ( tcOutputFile_Ext2 ) TO ( tcBakFile_2 ) + ENDIF + ENDIF + + IF NOT EMPTY(lcExt_3) + tcOutputFile_Ext3 = FORCEEXT(tcOutputFile, lcExt_3) + + IF FILE( tcOutputFile_Ext3 ) + COPY FILE ( tcOutputFile_Ext3 ) TO ( tcBakFile_3 ) + ENDIF + ENDIF ENDIF ENDIF ENDIF @@ -1136,6 +1151,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THROW ENDIF + FINALLY + RELEASE lcNext_Bak, lcExt_1, lcExt_2, lcExt_3, tcOutputFile_Ext1, tcOutputFile_Ext2, tcOutputFile_Ext3 ; + , tcOutputFile ENDTRY RETURN @@ -2235,16 +2253,26 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ******************************************************************************************************************* PROCEDURE normalizarCapitalizacionArchivos - LPARAMETERS tl_NormalizeInputFile + LPARAMETERS tl_NormalizeInputFile, tcFileName TRY - LOCAL lcPath, lcEXE_CAPS, lcOutputFile, loEx AS EXCEPTION ; - , loFSO AS Scripting.FileSystemObject, lcType + LOCAL lcPath, lcEXE_CAPS, lcOutputFile, llRelanzarError, lcType ; + , loEx AS EXCEPTION ; + , loFSO AS Scripting.FileSystemObject WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' - lcPath = JUSTPATH(.c_Foxbin2prg_FullPath) - lcEXE_CAPS = FORCEPATH( 'filename_caps.exe', lcPath ) - loFSO = .o_FSO + lcPath = JUSTPATH(.c_Foxbin2prg_FullPath) + lcEXE_CAPS = FORCEPATH( 'filename_caps.exe', lcPath ) + loFSO = .o_FSO + llRelanzarError = NOT tl_NormalizeInputFile + + IF tl_NormalizeInputFile + tcFileName = EVL( tcFileName, .c_InputFile ) + lcType = UPPER( JUSTEXT( tcFileName ) ) + ELSE + tcFileName = EVL( tcFileName, .c_OutputFile ) + lcType = .c_Type + ENDIF DO CASE CASE .n_ExisteCapitalizacion = -1 @@ -2270,82 +2298,42 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE - IF tl_NormalizeInputFile - lcType = UPPER( JUSTEXT( .c_InputFile ) ) + *-- Normalizar archivo(s) de entrada. El primero siempre se normaliza (??2, ??X, DBF, DBC) + .RenameFile( tcFileName, lcEXE_CAPS, loFSO, llRelanzarError ) - *-- Normalizar archivo(s) de entrada. El primero siempre se normaliza (??2, ??X, DBF, DBC) - .RenameFile( .c_InputFile, lcEXE_CAPS, loFSO, .F. ) + DO CASE + CASE lcType = 'PJX' + .RenameFile( FORCEEXT(tcFileName,'PJT'), lcEXE_CAPS, loFSO, llRelanzarError ) - DO CASE - CASE lcType = 'PJX' - .RenameFile( FORCEEXT(.c_InputFile,'PJT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'VCX' + .RenameFile( FORCEEXT(tcFileName,'VCT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'VCX' - .RenameFile( FORCEEXT(.c_InputFile,'VCT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'SCX' + .RenameFile( FORCEEXT(tcFileName,'SCT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'SCX' - .RenameFile( FORCEEXT(.c_InputFile,'SCT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'FRX' + .RenameFile( FORCEEXT(tcFileName,'FRT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'FRX' - .RenameFile( FORCEEXT(.c_InputFile,'FRT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'LBX' + .RenameFile( FORCEEXT(tcFileName,'LBT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'LBX' - .RenameFile( FORCEEXT(.c_InputFile,'LBT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'DBF' + IF FILE( FORCEEXT(tcFileName,'FPT') ) + .RenameFile( FORCEEXT(tcFileName,'FPT'), lcEXE_CAPS, loFSO, llRelanzarError ) + ENDIF + IF FILE( FORCEEXT(tcFileName,'CDX') ) + .RenameFile( FORCEEXT(tcFileName,'CDX'), lcEXE_CAPS, loFSO, llRelanzarError ) + ENDIF - CASE lcType = 'DBF' - IF FILE( FORCEEXT(.c_InputFile,'FPT') ) - .RenameFile( FORCEEXT(.c_InputFile,'FPT'), lcEXE_CAPS, loFSO, .F. ) - ENDIF - IF FILE( FORCEEXT(.c_InputFile,'CDX') ) - .RenameFile( FORCEEXT(.c_InputFile,'CDX'), lcEXE_CAPS, loFSO, .F. ) - ENDIF + CASE lcType = 'DBC' + .RenameFile( FORCEEXT(tcFileName,'DCX'), lcEXE_CAPS, loFSO, llRelanzarError ) + .RenameFile( FORCEEXT(tcFileName,'DCT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'DBC' - .RenameFile( FORCEEXT(.c_InputFile,'DCX'), lcEXE_CAPS, loFSO, .F. ) - .RenameFile( FORCEEXT(.c_InputFile,'DCT'), lcEXE_CAPS, loFSO, .F. ) + CASE lcType = 'MNX' + .RenameFile( FORCEEXT(tcFileName,'MNT'), lcEXE_CAPS, loFSO, llRelanzarError ) - CASE lcType = 'MNX' - .RenameFile( FORCEEXT(.c_InputFile,'MNT'), lcEXE_CAPS, loFSO, .F. ) + ENDCASE - ENDCASE - - ELSE - *-- Normalizar archivo(s) de salida. El primero siempre se normaliza (??2, ??X, DBF, DBC) - .RenameFile( .c_OutputFile, lcEXE_CAPS, loFSO, .T. ) - - DO CASE - CASE .c_Type = 'PJX' - .RenameFile( FORCEEXT(.c_OutputFile,'PJT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'VCX' - .RenameFile( FORCEEXT(.c_OutputFile,'VCT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'SCX' - .RenameFile( FORCEEXT(.c_OutputFile,'SCT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'FRX' - .RenameFile( FORCEEXT(.c_OutputFile,'FRT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'LBX' - .RenameFile( FORCEEXT(.c_OutputFile,'LBT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'DBF' - IF FILE( FORCEEXT(.c_OutputFile,'FPT') ) - .RenameFile( FORCEEXT(.c_OutputFile,'FPT'), lcEXE_CAPS, loFSO, .T. ) - ENDIF - IF FILE( FORCEEXT(.c_OutputFile,'CDX') ) - .RenameFile( FORCEEXT(.c_OutputFile,'CDX'), lcEXE_CAPS, loFSO, .T. ) - ENDIF - - CASE .c_Type = 'DBC' - .RenameFile( FORCEEXT(.c_OutputFile,'DCX'), lcEXE_CAPS, loFSO, .T. ) - .RenameFile( FORCEEXT(.c_OutputFile,'DCT'), lcEXE_CAPS, loFSO, .T. ) - - CASE .c_Type = 'MNX' - .RenameFile( FORCEEXT(.c_OutputFile,'MNT'), lcEXE_CAPS, loFSO, .T. ) - - ENDCASE - ENDIF ENDWITH && THIS CATCH TO loEx @@ -2353,6 +2341,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM FINALLY loFSO = NULL + RELEASE lcPath, lcEXE_CAPS, lcOutputFile, llRelanzarError, lcType, loFSO ENDTRY @@ -10035,7 +10024,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '', tcOutputFile ) ; AND toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) ; AND STRTOFILE( tcCodigo, tcOutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' @@ -10315,12 +10304,10 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) FOR I = 1 TO lnClassCount - .c_OutputFile = FORCEPATH( JUSTSTEM( lcOutputFile ), JUSTPATH( lcOutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( lcOutputFile ) + lcOutputFile = FORCEPATH( JUSTSTEM( .c_OutputFile ), JUSTPATH( .c_OutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile ) lcCodigo = laClasses(I,2) - .write_OutputFile( @lcCodigo, .c_OutputFile, @toFoxBin2Prg ) + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) ENDFOR - - .c_OutputFile = lcOutputFile ELSE FOR I = 1 TO lnClassCount lcCodigo = lcCodigo + laClasses(I,2) @@ -10573,11 +10560,10 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) FOR I = 1 TO lnClassCount - .c_OutputFile = FORCEPATH( JUSTSTEM( lcOutputFile ), JUSTPATH( lcOutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( lcOutputFile ) + lcOutputFile = FORCEPATH( JUSTSTEM( .c_OutputFile ), JUSTPATH( .c_OutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile ) lcCodigo = laClasses(I,2) - .write_OutputFile( @lcCodigo, .c_OutputFile, @toFoxBin2Prg ) + .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) ENDFOR - ELSE FOR I = 1 TO lnClassCount lcCodigo = lcCodigo + laClasses(I,2) @@ -10911,17 +10897,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg IF .l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF ENDWITH && THIS @@ -11292,17 +11268,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg IF .l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF ENDWITH && THIS @@ -11467,17 +11433,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg IF .l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF ENDWITH && THIS @@ -11567,17 +11523,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg IF .l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF *-- Hook para permitir ejecución externa (por ejemplo, para exportar datos) @@ -11684,17 +11630,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg IF .l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF ENDWITH && THIS @@ -11766,17 +11702,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg IF .l_Test toMenu = C_FB2PRG_CODE ELSE - lnLen = 1 &&LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) - DO CASE - CASE FILE(.c_OutputFile) AND SUBSTR( FILETOSTR( .c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) - *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) - .writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2Prg.ChangeFileAttribute( .c_OutputFile, '-R' ) ; - AND STRTOFILE( C_FB2PRG_CODE, .c_OutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + .write_OutputFile( (C_FB2PRG_CODE), .c_OutputFile, @toFoxBin2Prg ) ENDIF ENDWITH && THIS From d0af318639e07009f0747ccc6503db9068c22e29 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 4 Nov 2014 00:14:19 +0100 Subject: [PATCH 07/18] =?UTF-8?q?Changeset:=20463=20fdbozzo=20-=2003/11/20?= =?UTF-8?q?14=2023:59:00:=20-=20Normalizaci=C3=B3n=20de=20los=20InputFile?= =?UTF-8?q?=5FClass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 74689ca..907d7d5 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -5869,7 +5869,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin DODEFAULT( @toModulo, @toEx ) TRY - LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lnFileCount, laFiles(1,5) ; + LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; , laLineasExclusion(1), lnBloquesExclusion, I WITH THIS AS c_conversor_prg_a_vcx OF 'FOXBIN2PRG.PRG' @@ -5886,7 +5886,9 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin ASORT( laFiles, 1, 0, 0, 1) FOR I = 1 TO lnFileCount - C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) ) + lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) + C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR ENDIF @@ -5917,7 +5919,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; - , lcInputFile, lnFileCount, laFiles + , lcInputFile, lcInputFile_Class, lnFileCount, laFiles ENDTRY RETURN @@ -6186,7 +6188,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin DODEFAULT( @toModulo, @toEx ) TRY - LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lnFileCount, laFiles(1,5) ; + LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; , laLineasExclusion(1), lnBloquesExclusion, I WITH THIS AS c_conversor_prg_a_scx OF 'FOXBIN2PRG.PRG' @@ -6203,7 +6205,9 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ASORT( laFiles, 1, 0, 0, 1) FOR I = 1 TO lnFileCount - C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) ) + lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) + C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR ENDIF @@ -6234,7 +6238,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; - , lcInputFile, lnFileCount, laFiles + , lcInputFile, lcInputFile_Class, lnFileCount, laFiles ENDTRY RETURN @@ -10019,17 +10023,25 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base PROCEDURE write_OutputFile LPARAMETERS tcCodigo, tcOutputFile, toFoxBin2Prg - DO CASE - CASE FILE(tcOutputFile) AND FILETOSTR( tcOutputFile ) == tcCodigo + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + + IF FILE(tcOutputFile) AND FILETOSTR( tcOutputFile ) == tcCodigo *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '', tcOutputFile ) ; - AND toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) ; - AND STRTOFILE( tcCodigo, tcOutputFile ) = 0 - *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' - ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ENDCASE + ELSE + toFoxBin2Prg.doBackup( .F., .T., '', '', '', tcOutputFile ) + toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) + + IF STRTOFILE( tcCodigo, tcOutputFile ) = 0 + *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' + ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) + ELSE + toFoxBin2Prg.normalizarCapitalizacionArchivos( .F., tcOutputFile ) + ENDIF + ENDIF ENDPROC From 133aaea79c8a3db9af1198e51655bb7d948723d9 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 5 Nov 2014 20:06:43 +0100 Subject: [PATCH 08/18] =?UTF-8?q?Changeset:=20464=20fdbozzo=20-=2004/11/20?= =?UTF-8?q?14=2021:45:13:=20-=20Arreglo=20problema=20capitalizaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 907d7d5..31d27f6 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -5882,7 +5882,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) - lnFileCount = ADIR( laFiles, lcInputFile ) + lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) FOR I = 1 TO lnFileCount @@ -6201,9 +6201,9 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) - lnFileCount = ADIR( laFiles, lcInputFile ) + lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) - + FOR I = 1 TO lnFileCount lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) @@ -10026,22 +10026,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF + + LOCAL llFileExists + + llFileExists = FILE(tcOutputFile) - IF FILE(tcOutputFile) AND FILETOSTR( tcOutputFile ) == tcCodigo + IF llFileExists AND FILETOSTR( tcOutputFile ) == tcCodigo THEN *.writeLog( 'El archivo de salida [' + .c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) ELSE - toFoxBin2Prg.doBackup( .F., .T., '', '', '', tcOutputFile ) - toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) - + IF llFileExists THEN + toFoxBin2Prg.doBackup( .F., .T., '', '', '', tcOutputFile ) + toFoxBin2Prg.ChangeFileAttribute( tcOutputFile, '-R' ) + ENDIF + IF STRTOFILE( tcCodigo, tcOutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + .c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) - ELSE - toFoxBin2Prg.normalizarCapitalizacionArchivos( .F., tcOutputFile ) ENDIF ENDIF + + toFoxBin2Prg.normalizarCapitalizacionArchivos( .F., tcOutputFile ) ENDPROC From 56064ce7a771a38ce3e578a4482a816c6f22ad4e Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 5 Nov 2014 20:50:58 +0100 Subject: [PATCH 09/18] Changeset: 465 fdbozzo - 05/11/2014 20:06:45: - Uso de Filename_caps como objeto --- filename_caps.exe | Bin 29493 -> 30077 bytes foxbin2prg.prg | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/filename_caps.exe b/filename_caps.exe index 125449623871366371f2f5a83154b2aa7491e73f..056049b1f26cc7f5a6d4cfe8b2f3bf547f12a1b5 100644 GIT binary patch delta 1299 zcmZWpTTC2P82--e?9A=}-G#y~vJ{qDtTeqL)+;2g!z_|)cX5}kw5Th}78V9rC?-}# zL}Oy(C8@{8;6odl_+a9V5*~T6_Ep=&KKNuztwwn8Qo=%Z=fr=8dW$FX@Ba7m{r@@V zU;c?%tLzI;zt;r`_Hyyc{*dQ^Z@*zk&0ppB_CLeg___W=tZnH^f2T+3s042Mxo@y` z_L1e3o-~YjM%S5|lMm%!V$mo%t)a7C&qO&EHSBoSBLKJ7P6%i59XewjG26gad>Fgad>FgkxRB zMj0&O#iJ$iw1f-ka%kw)quu<~eC#0&F=Dr&xe-f5<9Y@DQaD&$=t*|TWHS0R5cuxi zNUZyWF~f%jo8-JE-sf)*nyOj|P_;o`7(B#+d~f!xz%5Bsp}9nWiVRVowdG!6BFX25 zgZ%rfKKrXAe1yKnM!zZfpR%af=8{f|O-bu0YP4%YH#*ZvBV0|fJ0wv@?g6J63}M@k zNxL=~Q!L>@Xv=-4Br0xukk%418bpW`%nq^hQt*>S7xZY?>Qze;aR*BJq|Vm({K;YY zE?IOqs`{Z$X}8Ru9r}tb^1Z{Y>{EVxcn|w{>6PJ^8Jpt8T&r)~OPkd`w&ji}TkaQB zes-jW_l&qDQ{hjHw6G8O+{ixmCI4h(UvN!va8(hEf{#wXgL|BiNpruHQTYW^=TDC| zDreL!cbS*Bnl(z=F8DG(Kl&iE=r_b~jW$U4d-#RXI)1=xkS9E%o-d46?ek8#G98@^0`iVVtz6me@z4C-@ql&*80im`iI<#+E8{aAb;u}13H!s!x`ILo3Y}@i zwonhHsFKCZjc3D(ZrgW}_dgB|e0HLS-QedYjy*h9F3RZ4g4C=ZEvIj=`&LC*ea`i$ z#$nn!S1$aHSdIma4~v68Ues>Y>^$4CF!j69*$s< zy$0QT2@6t$UBetvg#Cdg*5r<04!?s*3v3Rg#U;j9Cci$?hKulPt#+pWES02y2J|%n lhlziK$nw(MA^9NxaO(8#n>2~+$rL5}d%YgH&Cbwp`xDo;oGbtU delta 723 zcmYL{Ur5tY6vxlG?)USz&H0_!#;Bm_)ZhG*B^f0s z(MvraDcE}m zoix^a*KtP}a~E;3r_ zM_(m|o zitfjH3h4FNO)GQ!LVQKnrUG;Q8j60R+h{JT(ZVum|%fSszBZ;<{iC%C|)CL`F#&(|4;Bz z)2I{2DLmS997+r;>*Hj7R&xcZATL!p^Qp|Dr7NI`t7ff+y%3hbtcBw>tKnyS7kwXX z!M#)+@1$E-rpYmO#`hCn;%#`Vyny|=YhKe)72r1{3-PZ2 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 31d27f6..b58225c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -535,6 +535,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -605,6 +606,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM o_Conversor = NULL o_Frm_Avance = NULL o_FSO = NULL + o_FNC = NULL && Filename_caps object o_Configuration = NULL run_AfterCreateTable = '' run_AfterCreate_DB2 = '' @@ -672,6 +674,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM FINALLY THIS.o_FSO = NULL + THIS.o_FNC = NULL + SET PROCEDURE TO ENDTRY RETURN @@ -2280,6 +2284,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF FILE(lcEXE_CAPS) *.writeLog( '* Se ha encontrado el programa de capitalización de nombres [' + lcEXE_CAPS + ']' ) .writeLog( TEXTMERGE(C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC) ) + SET PROCEDURE TO (lcEXE_CAPS) ADDITIVE + .o_FNC = CREATEOBJECT( 'cl_FileName_Caps' ) + .n_ExisteCapitalizacion = 1 ELSE *-- No existe el programa de capitalización, así que no se capitalizan los nombres. @@ -2358,7 +2365,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.writeLog( TEXTMERGE(C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) ) THIS.ChangeFileAttribute( tcFileName, '+N' ) lcLog = '' - DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, tlRelanzarError, '1' + THIS.o_FNC.Capitalize( tcFileName, '', 'F', lcLog, tlRelanzarError, '1' ) THIS.writeLog( lcLog ) ENDPROC From 6b511185dad33e857940e7f8beaf3ca0d9fb4fc5 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 8 Nov 2014 23:59:53 +0100 Subject: [PATCH 10/18] Changeset: 466 fdbozzo - 06/11/2014 19:24:28: - Nuevo switch RedirectClassPerFileToMain, para forzar a que si se elije un archivo.clase.vc2 se redirija al archivo.vc2 principal - Nuevo switch ClassPerFileCheck, para verificar que las clases anotadas coinciden con las externas --- FoxBin2Prg__kompilieren_auf_Deutsch.vbs | 2 +- foxbin2prg.prg | 879 +++++++++++++++++------- foxbin2prg_en.h | 4 +- foxbin2prg_de.h => foxbin2prg_ge.h | 4 +- 4 files changed, 620 insertions(+), 269 deletions(-) rename foxbin2prg_de.h => foxbin2prg_ge.h (91%) diff --git a/FoxBin2Prg__kompilieren_auf_Deutsch.vbs b/FoxBin2Prg__kompilieren_auf_Deutsch.vbs index e7a5ab1..f5c068c 100644 --- a/FoxBin2Prg__kompilieren_auf_Deutsch.vbs +++ b/FoxBin2Prg__kompilieren_auf_Deutsch.vbs @@ -12,7 +12,7 @@ Set FileSystemObject = WScript.CreateObject("Scripting.FileSystemObject") Set oVFP9 = CreateObject("VisualFoxPro.Application.9") foxbin2prg_exe = Replace(WScript.ScriptFullName, WScript.ScriptName, "foxbin2prg.exe") nExitCode = 0 -cOrigFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "foxbin2prg_de.h") +cOrigFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "foxbin2prg_ge.h") cDestFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "foxbin2prg.h") cPath = FileSystemObject.GetParentFolderName( cOrigFile ) nRet = FileSystemObject.CopyFile( cOrigFile, cDestFile, True ) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index b58225c..98c4273 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -196,6 +196,9 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #DEFINE C_CLASSDATA_I '*< CLASSDATA:' #DEFINE C_CLASSDATA_F '/>' #DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I) +#DEFINE C_EXTERNAL_CLASS_I '*< EXTERNAL_CLASS:' +#DEFINE C_EXTERNAL_CLASS_F '/>' +#DEFINE C_LEN_EXTERNAL_CLASS_I LEN(C_EXTERNAL_CLASS_I) #DEFINE C_OBJECTDATA_I '*< OBJECTDATA:' #DEFINE C_OBJECTDATA_F '/>' #DEFINE C_LEN_OBJECTDATA_I LEN(C_OBJECTDATA_I) @@ -388,11 +391,13 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #DEFINE C_DUPLICATED_FILE_LOC "Archivo duplicado" #DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC "No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]" #DEFINE C_END_MARKER_NOT_FOUND_LOC "No se ha encontrado el marcador de fin [<>] que cierra al marcador de inicio [<>] de la línea <>" + #DEFINE C_EXTENSION_RECONFIGURATION_LOC "Reconfiguración de extensión:" + #DEFINE C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES "El conteo de clases externas (<>) no coincide con la cantidad encontrada (<>) para el archivo [<>]" + #DEFINE C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND "No se ha encontrado la clase externa [<>] del archivo [<>]" #DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC "No se encontró el campo [<>] en la estructura del archivo <>" #DEFINE C_FILE_DOESNT_EXIST_LOC "El archivo no existe:" #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC "El archivo [<<.c_InputFile>>] no está soportado" #DEFINE C_FILE_NOT_FOUND_LOC "No se encontró el archivo" - #DEFINE C_EXTENSION_RECONFIGURATION_LOC "Reconfiguración de extensión:" #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: ERROR!!" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: INFORMACIÓN DE SINTAXIS" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cNoMostrarErrores ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; @@ -510,29 +515,31 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; - + [] ; + [] ; - + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; - + [] ; + + [] ; + [] ; + + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; - + [] ; + [] ; + [] ; + + [] ; + [] ; - + [] ; - + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -561,73 +568,75 @@ 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 + n_FB2PRG_Version = 1.19 *-- Localized properties - c_loc_processing_file = C_PROCESSING_LOC + c_loc_processing_file = C_PROCESSING_LOC *-- - c_Language = 'ES' - c_FB2PRG_EXE_Version = 0 - c_Foxbin2prg_FullPath = '' - c_Foxbin2prg_ConfigFile = '' - c_CurDir = '' - c_InputFile = '' - c_OriginalFileName = '' - c_LogFile = '' - c_TextLog = '' - c_OutputFile = '' - c_Type = '' - t_InputFile_TimeStamp = {//::} - t_OutputFile_TimeStamp = {//::} - lFileMode = .F. - n_ExisteCapitalizacion = -1 - l_CFG_CachedAccess = .F. - l_ConfigEvaluated = .F. - l_Debug = .F. - l_Error = .F. - c_ErrorLog = '' - l_Test = .F. - l_ShowErrors = .T. - l_ShowProgress = .T. - l_AllowMultiConfig = .T. - l_DropNullCharsFromCode = .T. - l_Recompile = .T. - l_UseClassPerFile = .F. - l_NoTimestamps = .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 - l_Main_CFG_Loaded = .F. - n_ExtraBackupLevels = 1 - n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00 - n_CFG_Actual = 0 - n_ID = 0 - o_Conversor = NULL - o_Frm_Avance = NULL - o_FSO = NULL - o_FNC = NULL && Filename_caps object - o_Configuration = NULL - run_AfterCreateTable = '' - run_AfterCreate_DB2 = '' - c_VC2 = 'VC2' && VCX - c_SC2 = 'SC2' && SCX - c_PJ2 = 'PJ2' && PJX - c_FR2 = 'FR2' && FRX - c_LB2 = 'LB2' && LBX - c_DB2 = 'DB2' && DBF - c_DC2 = 'DC2' && DBC - c_MN2 = 'MN2' && MNX - PJX_Conversion_Support = 2 - VCX_Conversion_Support = 2 - SCX_Conversion_Support = 2 - FRX_Conversion_Support = 2 - LBX_Conversion_Support = 2 - MNX_Conversion_Support = 2 - DBF_Conversion_Support = 1 - DBC_Conversion_Support = 2 - DBF_Conversion_Included = '' - DBF_Conversion_Excluded = '' + c_Language = 'ES' + c_FB2PRG_EXE_Version = 0 + c_Foxbin2prg_FullPath = '' + c_Foxbin2prg_ConfigFile = '' + c_CurDir = '' + c_InputFile = '' + c_OriginalFileName = '' + c_LogFile = '' + c_TextLog = '' + c_OutputFile = '' + c_Type = '' + t_InputFile_TimeStamp = {//::} + t_OutputFile_TimeStamp = {//::} + lFileMode = .F. + n_ExisteCapitalizacion = -1 + l_CFG_CachedAccess = .F. + l_ConfigEvaluated = .F. + l_Debug = .F. + l_Error = .F. + c_ErrorLog = '' + l_Test = .F. + l_ShowErrors = .T. + l_ShowProgress = .T. + l_AllowMultiConfig = .T. + l_DropNullCharsFromCode = .T. + l_Recompile = .T. + l_UseClassPerFile = .F. + l_ClassPerFileCheck = .F. + l_RedirectClassPerFileToMain = .F. + l_NoTimestamps = .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 + l_Main_CFG_Loaded = .F. + n_ExtraBackupLevels = 1 + n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00 + n_CFG_Actual = 0 + n_ID = 0 + o_Conversor = NULL + o_Frm_Avance = NULL + o_FSO = NULL + o_FNC = NULL && Filename_caps object + o_Configuration = NULL + run_AfterCreateTable = '' + run_AfterCreate_DB2 = '' + c_VC2 = 'VC2' && VCX + c_SC2 = 'SC2' && SCX + c_PJ2 = 'PJ2' && PJX + c_FR2 = 'FR2' && FRX + c_LB2 = 'LB2' && LBX + c_DB2 = 'DB2' && DBF + c_DC2 = 'DC2' && DBC + c_MN2 = 'MN2' && MNX + PJX_Conversion_Support = 2 + VCX_Conversion_Support = 2 + SCX_Conversion_Support = 2 + FRX_Conversion_Support = 2 + LBX_Conversion_Support = 2 + MNX_Conversion_Support = 2 + DBF_Conversion_Support = 1 + DBC_Conversion_Support = 2 + DBF_Conversion_Included = '' + DBF_Conversion_Excluded = '' PROCEDURE INIT @@ -746,6 +755,24 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + PROCEDURE l_RedirectClassPerFileToMain_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_RedirectClassPerFileToMain + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_RedirectClassPerFileToMain, THIS.l_RedirectClassPerFileToMain ) + ENDIF + ENDPROC + + + PROCEDURE l_ClassPerFileCheck_ACCESS + IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) + RETURN THIS.l_ClassPerFileCheck + ELSE + RETURN NVL( THIS.o_Configuration( THIS.n_CFG_Actual ).l_ClassPerFileCheck, THIS.l_ClassPerFileCheck ) + 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 @@ -1239,7 +1266,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) ) ENDIF CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:') @@ -1248,133 +1275,147 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) ) 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) ) 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDebug: ' + TRANSFORM(tcDebug) ) 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > tcExtraBackupLevels: ' + TRANSFORM(tcExtraBackupLevels) ) 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(lcValue) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > ClearUniqueID: ' + TRANSFORM(lcValue) ) 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(lcValue) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > OptimizeByFilestamp: ' + TRANSFORM(lcValue) ) 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(lcValue) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > AllowMultiConfig: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 16 ) == LOWER('UseClassPerFile:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 17 ) ) IF INLIST( lcValue, '0', '1' ) THEN .l_UseClassPerFile = ( TRANSFORM(lcValue) == '1' ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > UseClassPerFile: ' + TRANSFORM(lcValue) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > UseClassPerFile: ' + TRANSFORM(lcValue) ) + ENDIF + + CASE LEFT( laConfig(I), 18 ) == LOWER('ClassPerFileCheck:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 19 ) ) + IF INLIST( lcValue, '0', '1' ) THEN + .l_ClassPerFileCheck = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > ClassPerFileCheck: ' + TRANSFORM(lcValue) ) + ENDIF + + CASE LEFT( laConfig(I), 27 ) == LOWER('RedirectClassPerFileToMain:') + lcValue = ALLTRIM( SUBSTR( laConfig(I), 28 ) ) + IF INLIST( lcValue, '0', '1' ) THEN + .l_RedirectClassPerFileToMain = ( TRANSFORM(lcValue) == '1' ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > RedirectClassPerFileToMain: ' + TRANSFORM(lcValue) ) ENDIF CASE LEFT( laConfig(I), 22 ) == LOWER('DropNullCharsFromCode:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 23 ) ) IF INLIST( lcValue, '0', '1' ) THEN .l_DropNullCharsFromCode = ( TRANSFORM(lcValue) == '1' ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DropNullCharsFromCode: ' + TRANSFORM(lcValue) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DropNullCharsFromCode: ' + TRANSFORM(lcValue) ) 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) ) + .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 lo_CFG.VCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > VCX_Conversion_Support: ' + TRANSFORM(lo_CFG.VCX_Conversion_Support) ) + .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 lo_CFG.SCX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > SCX_Conversion_Support: ' + TRANSFORM(lo_CFG.SCX_Conversion_Support) ) + .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 lo_CFG.FRX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > FRX_Conversion_Support: ' + TRANSFORM(lo_CFG.FRX_Conversion_Support) ) + .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 lo_CFG.LBX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > LBX_Conversion_Support: ' + TRANSFORM(lo_CFG.LBX_Conversion_Support) ) + .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 lo_CFG.MNX_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > MNX_Conversion_Support: ' + TRANSFORM(lo_CFG.MNX_Conversion_Support) ) + .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', '4' ) THEN lo_CFG.DBF_Conversion_Support = INT( VAL( lcValue ) ) - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(lo_CFG.DBF_Conversion_Support) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Support: ' + TRANSFORM(lo_CFG.DBF_Conversion_Support) ) ENDIF CASE LEFT( laConfig(I), 24 ) == LOWER('DBF_Conversion_Included:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 25 ) ) IF NOT EMPTY(lcValue) THEN lo_CFG.DBF_Conversion_Included = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Included: ' + TRANSFORM(lo_CFG.DBF_Conversion_Included) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Included: ' + TRANSFORM(lo_CFG.DBF_Conversion_Included) ) ENDIF CASE LEFT( laConfig(I), 24 ) == LOWER('DBF_Conversion_Excluded:') lcValue = ALLTRIM( SUBSTR( laConfig(I), 25 ) ) IF NOT EMPTY(lcValue) THEN lo_CFG.DBF_Conversion_Excluded = lcValue - .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Excluded: ' + TRANSFORM(lo_CFG.DBF_Conversion_Excluded) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBF_Conversion_Excluded: ' + TRANSFORM(lo_CFG.DBF_Conversion_Excluded) ) 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) ) + .writeLog( JUSTFNAME(lcConfigFile) + ' > DBC_Conversion_Support: ' + TRANSFORM(lo_CFG.DBC_Conversion_Support) ) ENDIF ENDCASE @@ -1412,16 +1453,18 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM 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_UseClassPerFile: ' + TRANSFORM(.l_UseClassPerFile) ) - .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) - .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) - .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) - .writeLog( '> l_DropNullCharsFromCode: ' + TRANSFORM(.l_DropNullCharsFromCode) ) + .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_UseClassPerFile: ' + TRANSFORM(.l_UseClassPerFile) ) + .writeLog( '> l_ClassPerFileCheck: ' + TRANSFORM(.l_ClassPerFileCheck) ) + .writeLog( '> l_RedirectClassPerFileToMain: ' + TRANSFORM(.l_RedirectClassPerFileToMain) ) + .writeLog( '> l_Debug: ' + TRANSFORM(.l_Debug) ) + .writeLog( '> n_ExtraBackupLevels: ' + TRANSFORM(.n_ExtraBackupLevels) ) + .writeLog( '> l_OptimizeByFilestamp: ' + TRANSFORM(.l_OptimizeByFilestamp) ) + .writeLog( '> l_DropNullCharsFromCode: ' + TRANSFORM(.l_DropNullCharsFromCode) ) lo_CFG = NULL RELEASE lo_CFG @@ -1432,7 +1475,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .n_CFG_Actual = 0 ENDIF - .writeLog( '> l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) + ' ( InputFile=' + tc_InputFile + ', CFG=' + FORCEPATH( 'foxbin2prg.cfg', lc_CFG_Path ) + ' )' ) + .writeLog( '> l_CFG_CachedAccess: ' + TRANSFORM(.l_CFG_CachedAccess) + ' ( InputFile=' + tc_InputFile + ', CFG=' + FORCEPATH( 'foxbin2prg.cfg', lc_CFG_Path ) + ' )' ) IF NOT llExisteConfig OR .n_CFG_Actual = 0 THEN .l_CFG_CachedAccess = .T. && Es acceso cacheado porque usa config.por defecto sin archivo CFG @@ -1545,8 +1588,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE ejecutar *-------------------------------------------------------------------------------------------------------------- * 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 + * tc_InputFile (v! IN ) Nombre del archivo de entrada, o Tipo de archivo cuando SourceSafe consulta por tipo de Soporte habilitado + * tcType (v? IN ) Tipo de archivo de entrada. 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) @@ -1618,7 +1661,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lnCodError = 1 OTHERWISE - *-- Ejecución normal + *-- EJECUCIÓN NORMAL *-- ARCHIVO DE CONFIGURACIÓN PRINCIPAL IF NOT THIS.l_ConfigEvaluated THEN @@ -1943,6 +1986,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- ARCHIVO DE CONFIGURACIÓN SECUNDARIO .EvaluarConfiguracion() + IF .l_UseClassPerFile + *-- Verifico si se debe forzar la redirección al archivo principal + IF .l_RedirectClassPerFileToMain AND '.' $ JUSTSTEM(.c_InputFile) + .c_InputFile = FORCEPATH( FORCEEXT( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTEXT(.c_InputFile) ) , JUSTPATH(.c_InputFile) ) + ENDIF + ENDIF + IF NOT EMPTY(tcOriginalFileName) tcOriginalFileName = loFSO.GetAbsolutePathName( tcOriginalFileName ) ENDIF @@ -3972,9 +4022,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] + ******************************************************************************************************************* PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- @@ -3991,87 +4043,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC - ******************************************************************************************************************* - FUNCTION get_ValueByName_FromListNamesWithValues - *-- ASIGNO EL VALOR DEL ARRAY DE DATOS Y VALORES PARA LA PROPIEDAD INDICADA - LPARAMETERS tcPropName, tcValueType, taPropsAndValues - LOCAL lnPos, luPropValue - - lnPos = ASCAN( taPropsAndValues, tcPropName, 1, 0, 1, 1+2+4+8) - - IF lnPos = 0 OR EMPTY( taPropsAndValues( lnPos, 2 ) ) - *-- Valores no encontrados o vacíos - luPropValue = '' - ELSE - luPropValue = taPropsAndValues( lnPos, 2 ) - ENDIF - - DO CASE - CASE tcValueType = 'I' - luPropValue = CAST( luPropValue AS INTEGER ) - - CASE tcValueType = 'N' - luPropValue = CAST( luPropValue AS DOUBLE ) - - CASE tcValueType = 'T' - luPropValue = CAST( luPropValue AS DATETIME ) - - CASE tcValueType = 'D' - luPropValue = CAST( luPropValue AS DATE ) - - CASE tcValueType = 'E' - luPropValue = EVALUATE( luPropValue ) - - OTHERWISE && Asumo 'C' para lo demás - luPropValue = luPropValue - - ENDCASE - - RETURN luPropValue - ENDFUNC - - - ******************************************************************************************************************* - PROCEDURE analizarBloque_FoxBin2Prg - *------------------------------------------------------ - *-- Analiza el bloque - *------------------------------------------------------ - LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines - - LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count - - IF LEFT( tcLine + ' ', LEN(C_FB2PRG_META_I) + 1 ) == C_FB2PRG_META_I + ' ' - llBloqueEncontrado = .T. - - *-- Metadatos del módulo - THIS.get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_FB2PRG_META_I, C_FB2PRG_META_F ) - toModulo._Version = THIS.get_ValueByName_FromListNamesWithValues( 'Version', 'N', @laPropsAndValues ) - toModulo._SourceFile = THIS.get_ValueByName_FromListNamesWithValues( 'SourceFile', 'C', @laPropsAndValues ) - ENDIF - - RETURN llBloqueEncontrado - ENDPROC - - - - PROCEDURE analizarBloque_LIBCOMMENT - *------------------------------------------------------ - *-- Analiza el bloque * - *------------------------------------------------------ - LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines - - LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count - - IF LEFT( tcLine, LEN(C_LIBCOMMENT_I) ) == C_LIBCOMMENT_I - llBloqueEncontrado = .T. - - *-- Metadatos del módulo - toModulo._Comment = ALLTRIM( STREXTRACT( tcLine, C_LIBCOMMENT_I, C_LIBCOMMENT_F ) ) - ENDIF - - RETURN llBloqueEncontrado - ENDPROC - ******************************************************************************************************************* PROCEDURE createProject @@ -4674,6 +4645,48 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + + ******************************************************************************************************************* + FUNCTION get_ValueByName_FromListNamesWithValues + *-- ASIGNO EL VALOR DEL ARRAY DE DATOS Y VALORES PARA LA PROPIEDAD INDICADA + LPARAMETERS tcPropName, tcValueType, taPropsAndValues + LOCAL lnPos, luPropValue + + lnPos = ASCAN( taPropsAndValues, tcPropName, 1, 0, 1, 1+2+4+8) + + IF lnPos = 0 OR EMPTY( taPropsAndValues( lnPos, 2 ) ) + *-- Valores no encontrados o vacíos + luPropValue = '' + ELSE + luPropValue = taPropsAndValues( lnPos, 2 ) + ENDIF + + DO CASE + CASE tcValueType = 'I' + luPropValue = CAST( luPropValue AS INTEGER ) + + CASE tcValueType = 'N' + luPropValue = CAST( luPropValue AS DOUBLE ) + + CASE tcValueType = 'T' + luPropValue = CAST( luPropValue AS DATETIME ) + + CASE tcValueType = 'D' + luPropValue = CAST( luPropValue AS DATE ) + + CASE tcValueType = 'E' + luPropValue = EVALUATE( luPropValue ) + + OTHERWISE && Asumo 'C' para lo demás + luPropValue = luPropValue + + ENDCASE + + RETURN luPropValue + ENDFUNC + + + ******************************************************************************************************************* PROCEDURE defined_PAM2Memo *-------------------------------------------------------------------------------------------------------------- @@ -4685,6 +4698,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE strip_Dimensions LPARAMETERS tcSeparatedCommaVars @@ -4698,6 +4712,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE hiddenAndProtected_PAM LPARAMETERS toClase @@ -4720,6 +4735,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE Evaluate_PAM LPARAMETERS tcMemo AS STRING, tcPAM AS STRING, tcPAM_Type AS STRING, tcPAM_Visibility AS STRING @@ -4743,6 +4759,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE insert_Object LPARAMETERS toClase, toObjeto, toFoxBin2Prg @@ -4818,6 +4835,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE insert_AllObjects *-- Recorro primero los objetos con ZOrder definido, y luego los demás @@ -4902,6 +4920,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE set_Line LPARAMETERS tcLine, taCodeLines, I @@ -4909,6 +4928,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarLineasDeProcedure LPARAMETERS toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto, tc_Comentario ; @@ -4987,6 +5007,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_ADD_OBJECT LPARAMETERS toModulo, toClase, tcLine, I, taCodeLines, tnCodeLines @@ -5112,6 +5133,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_DEFINED_PAM *-------------------------------------------------------------------------------------------------------------- @@ -5212,6 +5234,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_DEFINE_CLASS LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ; @@ -5378,6 +5401,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_ENDDEFINE LPARAMETERS toClase, tcLine, I, tcProcedureAbierto @@ -5409,6 +5433,30 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + + ******************************************************************************************************************* + PROCEDURE analizarBloque_FoxBin2Prg + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines + + LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LEFT( tcLine + ' ', LEN(C_FB2PRG_META_I) + 1 ) == C_FB2PRG_META_I + ' ' + llBloqueEncontrado = .T. + + *-- Metadatos del módulo + THIS.get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_FB2PRG_META_I, C_FB2PRG_META_F ) + toModulo._Version = THIS.get_ValueByName_FromListNamesWithValues( 'Version', 'N', @laPropsAndValues ) + toModulo._SourceFile = THIS.get_ValueByName_FromListNamesWithValues( 'SourceFile', 'C', @laPropsAndValues ) + ENDIF + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* PROCEDURE analizarBloque_HIDDEN LPARAMETERS toClase, tcLine @@ -5428,6 +5476,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_INCLUDE LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto @@ -5451,6 +5500,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + + ******************************************************************************************************************* PROCEDURE analizarBloque_CLASSCOMMENTS LPARAMETERS toClase, tcLine ,taCodeLines, tnCodeLines, I @@ -5502,6 +5553,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + + ******************************************************************************************************************* PROCEDURE analizarBloque_CLASSMETADATA LPARAMETERS toClase, tcLine @@ -5539,6 +5592,60 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + + ******************************************************************************************************************* + PROCEDURE analizarBloque_EXTERNAL_CLASS + *------------------------------------------------------ + *-- Analiza el bloque *< EXTERNAL_CLASS: Name="nombre-clase" Baseclass="clase-base" /> + *------------------------------------------------------ + LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines + + #IF .F. + LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' + #ENDIF + + LOCAL llBloqueEncontrado + + IF LEFT(tcLine, C_LEN_EXTERNAL_CLASS_I) == C_EXTERNAL_CLASS_I + LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count + llBloqueEncontrado = .T. + + WITH THIS + .get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_EXTERNAL_CLASS_I, C_EXTERNAL_CLASS_F ) + + toModulo._ExternalClasses_Count = toModulo._ExternalClasses_Count + 1 + DIMENSION toModulo._ExternalClasses( toModulo._ExternalClasses_Count ) + toModulo._ExternalClasses( toModulo._ExternalClasses_Count ) = .get_ValueByName_FromListNamesWithValues( 'Name', 'C', @laPropsAndValues ) + ENDWITH && THIS + ENDIF + + RETURN llBloqueEncontrado + ENDPROC + + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_LIBCOMMENT + *------------------------------------------------------ + *-- Analiza el bloque * + *------------------------------------------------------ + LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines + + LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LEFT( tcLine, LEN(C_LIBCOMMENT_I) ) == C_LIBCOMMENT_I + llBloqueEncontrado = .T. + + *-- Metadatos del módulo + toModulo._Comment = ALLTRIM( STREXTRACT( tcLine, C_LIBCOMMENT_I, C_LIBCOMMENT_F ) ) + ENDIF + + RETURN llBloqueEncontrado + ENDPROC + + + + ******************************************************************************************************************* PROCEDURE analizarBloque_OBJECTMETADATA LPARAMETERS toClase, tcLine @@ -5573,6 +5680,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_OLE_DEF LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto @@ -5622,6 +5730,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_PROCEDURE LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ; @@ -5667,6 +5776,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE analizarBloque_PROTECTED LPARAMETERS toClase, tcLine @@ -5686,6 +5796,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE evaluarDefinicionDeProcedure LPARAMETERS toClase, tnX, tc_Comentario, tcProcName, tcProcType, toObjeto @@ -5759,6 +5870,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* PROCEDURE identificarBloquesDeCodigo *-------------------------------------------------------------------------------------------------------------- @@ -5768,21 +5880,23 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base * taLineasExclusion (@! IN ) Array unidimensional con un .T. o .F. según la línea sea de exclusión o no * tnBloquesExclusion (@! IN ) Cantidad de bloques de exclusión * toModulo (@? OUT) Objeto con toda la información del módulo analizado + * toFoxBin2Prg (@? IN ) Referencia al objeto principal * * NOTA: * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS taCodeLines, tnCodeLines, taLineasExclusion, tnBloquesExclusion, toModulo + LPARAMETERS taCodeLines, tnCodeLines, taLineasExclusion, tnBloquesExclusion, toModulo, toFoxBin2Prg EXTERNAL ARRAY taCodeLines, taLineasExclusion #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY LOCAL I, loEx AS EXCEPTION ; - , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed, llLIBCOMMENT_Completed ; + , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed, llLIBCOMMENT_Completed, llEXTERNAL_CLASS_Completed ; , lc_Comentario, lcProcedureAbierto, lcLine ; , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' @@ -5794,8 +5908,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base IF tnCodeLines > 1 *-- Defino el objeto de módulo y sus propiedades - toModulo = NULL - toModulo = CREATEOBJECT('CL_MODULO') + *toModulo = NULL + *toModulo = CREATEOBJECT('CL_MODULO') + + *IF NOT (toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_RedirectClassPerFileToMain) + * llEXTERNAL_CLASS_Completed = .T. + *ENDIF *-- Búsqueda del ID de inicio de bloque (DEFINE CLASS / PROCEDURE) FOR I = 1 TO tnCodeLines @@ -5806,28 +5924,36 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base CASE .lineaExcluida( I, tnBloquesExclusion, @taLineasExclusion ) ; OR .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vacía o solo Comentarios - CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) - llFoxBin2Prg_Completed = .T. + *CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + * llFoxBin2Prg_Completed = .T. - CASE NOT llLIBCOMMENT_Completed AND .analizarBloque_LIBCOMMENT( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) - llLIBCOMMENT_Completed = .T. + *CASE NOT llEXTERNAL_CLASS_Completed AND .analizarBloque_EXTERNAL_CLASS( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + *-- Puede haber varias clases externas - CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ; + *CASE NOT llLIBCOMMENT_Completed AND .analizarBloque_LIBCOMMENT( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + * llLIBCOMMENT_Completed = .T. + * llEXTERNAL_CLASS_Completed = .T. + + *CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ; , @I, tnCodeLines, @lcProcedureAbierto ) - *-- Puede haber varios + *-- Puede haber varios objetos OLE - CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @lcLine ; + *CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @lcLine ; , @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto ) * Específico para SCX que lo tiene al inicio - llINCLUDE_SCX_Completed = .T. + * llINCLUDE_SCX_Completed = .T. + * llEXTERNAL_CLASS_Completed = .T. CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ; , @lcProcedureAbierto, @taLineasExclusion, @tnBloquesExclusion, @lc_Comentario ) - *-- Puede haber varias + *-- Puede haber varias clases definidas + * llEXTERNAL_CLASS_Completed = .T. ENDCASE ENDFOR + + .verificar_CLASES_EXTERNAS( @toModulo, @toFoxBin2Prg ) ENDIF ENDWITH && THIS @@ -5849,9 +5975,167 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* + PROCEDURE identificarBloquesDeCabecera + *-------------------------------------------------------------------------------------------------------------- + * 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 + * taLineasExclusion (@! IN ) Array unidimensional con un .T. o .F. según la línea sea de exclusión o no + * tnBloquesExclusion (@! IN ) Cantidad de bloques de exclusión + * toModulo (@? OUT) Objeto con toda la información del módulo analizado + * toFoxBin2Prg (@? IN ) Referencia al objeto principal + * + * NOTA: + * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. + *-------------------------------------------------------------------------------------------------------------- + LPARAMETERS taCodeLines, tnCodeLines, taLineasExclusion, tnBloquesExclusion, toModulo, toFoxBin2Prg + + EXTERNAL ARRAY taCodeLines, taLineasExclusion + + #IF .F. + LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL I, loEx AS EXCEPTION ; + , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed, llLIBCOMMENT_Completed, llEXTERNAL_CLASS_Completed ; + , lc_Comentario, lcProcedureAbierto, lcLine ; + , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' + + WITH THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG' + STORE '' TO lcProcedureAbierto + + .c_Type = UPPER(JUSTEXT(.c_OutputFile)) + + IF tnCodeLines > 1 + + *-- Defino el objeto de módulo y sus propiedades + *toModulo = NULL + *toModulo = CREATEOBJECT('CL_MODULO') + + IF NOT (toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_RedirectClassPerFileToMain) + llEXTERNAL_CLASS_Completed = .T. + ENDIF + + *-- Búsqueda del ID de inicio de bloque (DEFINE CLASS / PROCEDURE) + FOR I = 1 TO tnCodeLines + STORE '' TO lc_Comentario + .set_Line( @lcLine, @taCodeLines, I ) + + DO CASE + CASE .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vacía o solo Comentarios + + CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + llFoxBin2Prg_Completed = .T. + + CASE NOT llEXTERNAL_CLASS_Completed AND .analizarBloque_EXTERNAL_CLASS( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + *-- Puede haber varias clases externas + + CASE NOT llLIBCOMMENT_Completed AND .analizarBloque_LIBCOMMENT( @toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) + llLIBCOMMENT_Completed = .T. + llEXTERNAL_CLASS_Completed = .T. + + CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ; + , @I, tnCodeLines, @lcProcedureAbierto ) + *-- Puede haber varios objetos OLE + + CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @lcLine ; + , @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto ) + * Específico para SCX que lo tiene al inicio + llINCLUDE_SCX_Completed = .T. + llEXTERNAL_CLASS_Completed = .T. + + *CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ; + , @lcProcedureAbierto, @taLineasExclusion, @tnBloquesExclusion, @lc_Comentario ) + *-- Puede haber varias clases definidas + * llEXTERNAL_CLASS_Completed = .T. + + ENDCASE + + ENDFOR + + ENDIF + ENDWITH && THIS + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + STORE NULL TO loClase + RELEASE loClase, I ; + , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed, llLIBCOMMENT_Completed ; + , lc_Comentario, lcProcedureAbierto, lcLine + ENDTRY + + RETURN + ENDPROC + + + + ******************************************************************************************************************* + PROCEDURE verificar_CLASES_EXTERNAS + *-------------------------------------------------------------------------------- + *-- Compara las clases definidas en la cabecera con las clases encontradas luego + *-------------------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (@? OUT) Objeto con toda la información del módulo analizado + * toFoxBin2Prg (@? IN ) Referencia al objeto principal + *-------------------------------------------------------------------------------------------------------------- + LPARAMETERS toModulo, toFoxBin2Prg + + #IF .F. + LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + + LOCAL lnItem, I, X + + *-- Verificación de las Clases, si son Externas y se indicó chequearlas + IF toFoxBin2Prg.l_UseClassPerFile AND toFoxBin2Prg.l_ClassPerFileCheck + DO CASE + CASE toModulo._ExternalClasses_Count = 0 AND toModulo._ExternalClasses_Count <> toModulo._Clases_Count + *ERROR 'El conteo de clases externas (' + TRANSFORM(toModulo._ExternalClasses_Count) + ') no coincide con la cantidad encontrada (' + TRANSFORM(toModulo._Clases_Count) + ') en el archivo [' + toFoxBin2Prg.c_InputFile + ']' + ERROR (TEXTMERGE(C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES)) + + CASE toModulo._Clases_Count =0 AND toModulo._ExternalClasses_Count <> toModulo._Clases_Count + *ERROR 'El conteo de clases externas (' + TRANSFORM(toModulo._ExternalClasses_Count) + ') no coincide con la cantidad encontrada (' + TRANSFORM(toModulo._Clases_Count) + ') en el archivo [' + toFoxBin2Prg.c_InputFile + ']' + ERROR (TEXTMERGE(C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES)) + + *CASE toModulo._ExternalClasses_Count <> toModulo._Clases_Count THEN + ENDCASE + + FOR I = 1 TO toModulo._ExternalClasses_Count + lnItem = 0 + + FOR X = 1 TO toModulo._Clases_Count + IF LOWER( toModulo._Clases(X)._objname ) == LOWER( toModulo._ExternalClasses(I) ) + lnItem = X + EXIT + ENDIF + ENDFOR + + IF lnItem = 0 THEN + *ERROR 'No se ha encontrado la clase externa [' + toModulo._ExternalClasses(I) + '] en el archivo [' + toFoxBin2Prg.c_InputFile + ']' + ERROR (TEXTMERGE(C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND)) + ENDIF + + toModulo._Clases(lnItem)._Checked = .T. + ENDFOR + ENDIF + ENDPROC + + + ENDDEFINE + ******************************************************************************************************************* DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin #IF .F. @@ -5865,12 +6149,13 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- * 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 + * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (@! OUT) Objeto con información del error + * toFoxBin2Prg (@? IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. + LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -5884,8 +6169,13 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo + toModulo = CREATEOBJECT('CL_MODULO') C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + + .identificarBloquesDeCabecera( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg ) + IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) @@ -5894,6 +6184,12 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin FOR I = 1 TO lnFileCount lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) + + *-- Verificación de las Clases, si son Externas y se indicó chequearlas + IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 + LOOP && Salteo esta clase + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -5901,16 +6197,15 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) - - *-- Creo la librería - .createClasslib() - *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF .identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laLineasExclusion, @lnBloquesExclusion ) *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase - .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo ) + .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg ) + + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) + + .createClasslib() .escribirArchivoBin( @toModulo, @toFoxBin2Prg ) ENDWITH && THIS @@ -5933,6 +6228,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin ENDPROC + ******************************************************************************************************************* PROCEDURE escribirArchivoBin LPARAMETERS toModulo, toFoxBin2Prg @@ -6171,6 +6467,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin ENDDEFINE + ******************************************************************************************************************* DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin #IF .F. @@ -6184,9 +6481,9 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- * 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 + * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto + * toEx (@! OUT) Objeto con información del error + * toFoxBin2Prg (@! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. @@ -6203,8 +6500,13 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo + toModulo = CREATEOBJECT('CL_MODULO') C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + + .identificarBloquesDeCabecera( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg ) + IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) @@ -6213,6 +6515,12 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FOR I = 1 TO lnFileCount lcInputFile_Class = FORCEPATH( JUSTSTEM( laFiles(I,1) ), JUSTPATH( .c_InputFile ) ) + '.' + JUSTEXT( .c_InputFile ) + + *-- Verificación de las Clases, si son Externas y se indicó chequearlas + IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 + LOOP && Salteo esta clase + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -6220,16 +6528,15 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) - - *-- Creo el form - .createForm() - *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF .identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laLineasExclusion, @lnBloquesExclusion ) *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase - .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo ) + .identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg ) + + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) + + .createForm() .escribirArchivoBin( @toModulo, @toFoxBin2Prg ) ENDWITH && THIS @@ -6252,6 +6559,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ENDPROC + ******************************************************************************************************************* PROCEDURE escribirArchivoBin LPARAMETERS toModulo, toFoxBin2Prg @@ -6487,6 +6795,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ENDDEFINE + ******************************************************************************************************************* DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin #IF .F. @@ -8378,6 +8687,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -9499,6 +9809,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDPROC + ******************************************************************************************************************* + PROCEDURE write_EXTERNAL_CLASS_HEADER + LPARAMETERS toRegClass, toFoxBin2Prg, tcCodigo + *-- < EXTERNAL_CLASS Name = "class-name" Baseclass="base-class" /> + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + + IF EMPTY(tcCodigo) THEN + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *-- EXTERNAL_CLASS identify external member Class names / EXTERNAL_CLASS identifica los nombres de las Clases externas + ENDTEXT + ENDIF + + TEXT TO tcCodigo ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> Name="<>" Baseclass="<>" <> + ENDTEXT + + RETURN + ENDPROC + + ******************************************************************************************************************* PROCEDURE write_INCLUDE LPARAMETERS toReg, tcCodigo @@ -10152,10 +10484,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ; , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count, lcCodigo, laClasses(1,2) ; - , lnClassCount, lcOutputFile + , lnClassCount, lcOutputFile, lcExternalHeader STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; , lnMethodCount, lnClassCount - STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile + STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile ; + , C_FB2PRG_CODE, lcExternalHeader STORE NULL TO loRegClass, loRegObj WITH THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' @@ -10166,8 +10499,6 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE SET ORDER TO 0 IN TABLABIN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() - .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) *-- Escribo los métodos ordenados @@ -10217,6 +10548,10 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg .write_CLASSMETADATA( @loRegClass, @lcCodigo ) + IF toFoxBin2Prg.l_UseClassPerFile + .write_EXTERNAL_CLASS_HEADER( @loRegClass, @toFoxBin2Prg, @lcExternalHeader ) + ENDIF + *------------------------------------------------------------------------------- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN *------------------------------------------------------------------------------- @@ -10317,7 +10652,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg *-- Genero el VC2 lcOutputFile = .c_OutputFile - lcCodigo = C_FB2PRG_CODE + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + CR_LF + C_FB2PRG_CODE IF .l_Test FOR I = 1 TO lnClassCount @@ -10392,10 +10727,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ; , laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count, lcCodigo, laClasses(1,2) ; - , lnClassCount, lcOutputFile + , lnClassCount, lcOutputFile, lcExternalHeader STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count ; , lnMethodCount, lnClassCount - STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile + STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs, lcCodigo, laClasses(1,2), lcOutputFile ; + , C_FB2PRG_CODE, lcExternalHeader STORE NULL TO loRegClass, loRegObj WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' @@ -10406,8 +10742,6 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE SET ORDER TO 0 IN TABLABIN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() - .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) *-- Escribo los métodos ordenados @@ -10470,6 +10804,10 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg .write_CLASSMETADATA( @loRegClass, @lcCodigo ) + IF toFoxBin2Prg.l_UseClassPerFile + .write_EXTERNAL_CLASS_HEADER( @loRegClass, @toFoxBin2Prg, @lcExternalHeader ) + ENDIF + *------------------------------------------------------------------------------- *-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICIÓN *------------------------------------------------------------------------------- @@ -10573,7 +10911,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *-- Genero el SC2 lcOutputFile = .c_OutputFile - lcCodigo = C_FB2PRG_CODE + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + CR_LF + C_FB2PRG_CODE IF .l_Test FOR I = 1 TO lnClassCount @@ -11916,6 +12254,8 @@ DEFINE CLASS CL_MODULO AS CL_CUS_BASE + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -11925,13 +12265,14 @@ DEFINE CLASS CL_MODULO AS CL_CUS_BASE + [] - DIMENSION _Ole_Objs[1], _Clases[1] - _Version = 0 - _SourceFile = '' - _Ole_Obj_count = 0 - _Clases_Count = 0 - _includeFile = '' - _Comment = '' + DIMENSION _Ole_Objs[1], _Clases[1], _ExternalClasses(1) + _Version = 0 + _SourceFile = '' + _ExternalClasses_Count = 0 + _Ole_Obj_count = 0 + _Clases_Count = 0 + _includeFile = '' + _Comment = '' ************************************************************************************************ @@ -12024,6 +12365,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -12076,6 +12418,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE _Nombre = '' _ObjName = '' _Parent = '' + _Checked = .F. && Solo para Clases Externas: Permite saber si la clase fue checkeada contra la Clase Externa. _Definicion = '' _Class = '' _ClassLoc = '' @@ -20026,18 +20369,20 @@ DEFINE CLASS CL_CFG AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; - + [] ; + [] ; + [] ; + [] ; @@ -20057,36 +20402,38 @@ DEFINE CLASS CL_CFG AS CUSTOM *-- Configuration class. By default asumes master value, except when overriding one. - 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 - l_UseClassPerFile = 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 - DBF_Conversion_Included = NULL - DBF_Conversion_Excluded = NULL - DBC_Conversion_Support = NULL + 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 + l_RedirectClassPerFileToMain = NULL + l_UseClassPerFile = NULL + l_ClassPerFileCheck = 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 + DBF_Conversion_Included = NULL + DBF_Conversion_Excluded = NULL + DBC_Conversion_Support = NULL ENDDEFINE diff --git a/foxbin2prg_en.h b/foxbin2prg_en.h index 7d8eb60..b811b7b 100644 --- a/foxbin2prg_en.h +++ b/foxbin2prg_en.h @@ -14,11 +14,13 @@ #DEFINE C_DUPLICATED_FILE_LOC "Duplicated file" #DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC "Cannot find end marker [ENDDEFINE] of line <> for ID [<>]" #DEFINE C_END_MARKER_NOT_FOUND_LOC "Cannot find end marker [<>] that closes start marker [<>] on line <>" +#DEFINE C_EXTENSION_RECONFIGURATION_LOC "Extension Reconfiguration:" +#DEFINE C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES "External class count (<>) does not match found classes (<>) for file [<>]" +#DEFINE C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND "External class [<>] is not found in file [<>]" #DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC "Field [<>] not found in structure of file <>" #DEFINE C_FILE_DOESNT_EXIST_LOC 'File does not exist:' #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC "File [<<.c_InputFile>>] is not supported" #DEFINE C_FILE_NOT_FOUND_LOC "File not found" -#DEFINE C_EXTENSION_RECONFIGURATION_LOC "Extension Reconfiguration:" #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: ERROR!!" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: SYNTAX INFO" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; diff --git a/foxbin2prg_de.h b/foxbin2prg_ge.h similarity index 91% rename from foxbin2prg_de.h rename to foxbin2prg_ge.h index 1b3637c..ce53faf 100644 --- a/foxbin2prg_de.h +++ b/foxbin2prg_ge.h @@ -15,10 +15,12 @@ #DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC "Kann keinen Ende Marker [ENDDEFINE] in Zeile <> für die ID [<>] finden" #DEFINE C_END_MARKER_NOT_FOUND_LOC "Kann keinen Ende Marker [<>] welcher den Start Marker [<>] in Zeile <> schließt" #DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC "Feld [<>] nicht in der Struktur von Datei <> gefunden" -#DEFINE C_FILE_DOESNT_EXIST_LOC 'Datei existiert nicht:' +#DEFINE C_FILE_DOESNT_EXIST_LOC "Datei existiert nicht:" #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC "Datei [<<.c_InputFile>>] wird nicht unterstützt" #DEFINE C_FILE_NOT_FOUND_LOC "Datei nicht gefunden" #DEFINE C_EXTENSION_RECONFIGURATION_LOC "Erweiterungsneukonfiguration:" +#DEFINE C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" +#DEFINE C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND "Externe Klasse (<>) nicht in der Datei [<>] gefunden" #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: FEHLER!!" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: SYNTAX INFO" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; From 6ba908cd6862d7bfc149eb2cb51de010635651e9 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 9 Nov 2014 00:36:26 +0100 Subject: [PATCH 11/18] Changeset: 467 fdbozzo - 08/11/2014 23:59:54: - Agregado de FB2P header en cada archivo de clase individual --- foxbin2prg.prg | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 98c4273..0e745c7 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -6169,17 +6169,17 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo - toModulo = CREATEOBJECT('CL_MODULO') - C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + toModulo = CREATEOBJECT('CL_MODULO') + C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) - lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) .identificarBloquesDeCabecera( @laCodeLines, lnCodeLines, @laLineasExclusion, lnBloquesExclusion, @toModulo, @toFoxBin2Prg ) IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes - lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) - lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) + lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) + lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) FOR I = 1 TO lnFileCount @@ -6220,8 +6220,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) - RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; - , lcInputFile, lcInputFile_Class, lnFileCount, laFiles + RELEASE lnCodError, laCodeLines, lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles ; + , laLineasExclusion, lnBloquesExclusion, I ENDTRY RETURN @@ -6487,6 +6487,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. + LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -6500,8 +6501,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin STORE '' TO C_FB2PRG_CODE STORE NULL TO toModulo - toModulo = CREATEOBJECT('CL_MODULO') - C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) + toModulo = CREATEOBJECT('CL_MODULO') + C_FB2PRG_CODE = FILETOSTR( .c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) @@ -6509,8 +6510,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin IF toFoxBin2Prg.l_UseClassPerFile *-- Esto crea la máscara de búsqueda "filename.*.ext" para encontrar las partes - lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) - lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) + lcInputFile = FORCEPATH( JUSTSTEM( .c_InputFile ), JUSTPATH( .c_InputFile ) ) + '.*.' + JUSTEXT( .c_InputFile ) + lnFileCount = ADIR( laFiles, lcInputFile, "", 1 ) ASORT( laFiles, 1, 0, 0, 1) FOR I = 1 TO lnFileCount @@ -6551,8 +6552,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FINALLY USE IN (SELECT("TABLABIN")) - RELEASE lnCodError, laCodeLines, lnCodeLines, laLineasExclusion, lnBloquesExclusion, I ; - , lcInputFile, lcInputFile_Class, lnFileCount, laFiles + RELEASE lnCodError, laCodeLines, lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles ; + , laLineasExclusion, lnBloquesExclusion, I ENDTRY RETURN @@ -10665,7 +10666,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg FOR I = 1 TO lnClassCount lcOutputFile = FORCEPATH( JUSTSTEM( .c_OutputFile ), JUSTPATH( .c_OutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile ) - lcCodigo = laClasses(I,2) + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + laClasses(I,2) .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) ENDFOR ELSE @@ -10924,7 +10925,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg FOR I = 1 TO lnClassCount lcOutputFile = FORCEPATH( JUSTSTEM( .c_OutputFile ), JUSTPATH( .c_OutputFile ) ) + '.' + laClasses(I,1) + '.' + JUSTEXT( .c_OutputFile ) - lcCodigo = laClasses(I,2) + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + laClasses(I,2) .write_OutputFile( @lcCodigo, lcOutputFile, @toFoxBin2Prg ) ENDFOR ELSE From ec6a185464a933f782b0f308954c81ab482f9708 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 9 Nov 2014 15:10:18 +0100 Subject: [PATCH 12/18] =?UTF-8?q?Changeset:=20468=20fdbozzo=20-=2009/11/20?= =?UTF-8?q?14=2000:36:27:=20-=20Adapto=20el=20script=20de=20conversi=C3=B3?= =?UTF-8?q?n=20PRG=20a=20BIN=20para=20ignorar=20los=20archivos=20de=20clas?= =?UTF-8?q?es=20individuales=20(archivo.clase.tx2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convert_VFP9_PRG_2_BIN.vbs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Convert_VFP9_PRG_2_BIN.vbs b/Convert_VFP9_PRG_2_BIN.vbs index 3f00172..6f030d9 100644 --- a/Convert_VFP9_PRG_2_BIN.vbs +++ b/Convert_VFP9_PRG_2_BIN.vbs @@ -158,17 +158,23 @@ End Sub Private Sub evaluateFile( tcFile ) lcExt = UCase( FileSystemObject.GetExtensionName( tcFile ) ) - oVFP9.SetVar "gc_Ext", lcExt - - '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 + lcFileName = FileSystemObject.GetFileName( tcFile ) + laPoints = Split( lcFileName, "." ) + lnPoints = UBound(laPoint) + '-- No proceso los archivos con más de un punto (clases en archivos individuales) por performance + If lnPoints = 1 Then + oVFP9.SetVar "gc_Ext", lcExt + + '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 3c944235a1218a26814d432e9c11d1d391b57a41 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 9 Nov 2014 21:31:45 +0100 Subject: [PATCH 13/18] =?UTF-8?q?Changeset:=20474=20fdbozzo=20-=2009/11/20?= =?UTF-8?q?14=2021:30:08:=20-=20Agregado=20de=20cr=C3=A9ditos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 1 + 1 file changed, 1 insertion(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 0e745c7..d137d24 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -107,6 +107,7 @@ * 19/09/2014 FDBOZZO v1.19.34 Arreglo bug: Si se ejecuta FoxBin2Prg desde ventana de comandos FoxPro para un proyecto y hay algún archivo abierto o cacheado, se produce un error al intentar capitalizar el archivo de entrada (Jim Nelson) * 26/09/2014 FDBOZZO v1.19.35 Mejora: Generar siempre el mismo Timestamp y UniqueID para los binarios minimizaría los cambios al regenerarlos (Marcio Gomez G.) * 08/10/2014 FDBOZZO v1.19.36 Arreglo bug: Al generar el mn2 el identificador queda vacío (bug introducido en v1.19.35) +* 21/10/2014 FDBOZZO v1.19.37 Mejora: Permitir generar una clase por archivo (Ryan Harris/Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- From c7ed26808d0e166445f77a02336dccaa987524ce Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 9 Nov 2014 22:28:54 +0100 Subject: [PATCH 14/18] Changeset: 477 fdbozzo - 09/11/2014 22:22:02: - Arreglo del header --- foxbin2prg.prg | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d137d24..af42da8 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -10652,9 +10652,13 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg laClasses(lnClassCount,2) = lcCodigo ENDSCAN + IF toFoxBin2Prg.l_UseClassPerFile + lcExternalHeader = lcExternalHeader + CR_LF + ENDIF + *-- Genero el VC2 lcOutputFile = .c_OutputFile - lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + CR_LF + C_FB2PRG_CODE + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + C_FB2PRG_CODE IF .l_Test FOR I = 1 TO lnClassCount @@ -10911,9 +10915,13 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg laClasses(lnClassCount,2) = lcCodigo ENDSCAN + IF toFoxBin2Prg.l_UseClassPerFile + lcExternalHeader = lcExternalHeader + CR_LF + ENDIF + *-- Genero el SC2 lcOutputFile = .c_OutputFile - lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + CR_LF + C_FB2PRG_CODE + lcCodigo = toFoxBin2Prg.get_PROGRAM_HEADER() + lcExternalHeader + C_FB2PRG_CODE IF .l_Test FOR I = 1 TO lnClassCount From e4d6dda8fd39663d2b1592eaaf0a121c45fd03ae Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 10 Nov 2014 00:09:33 +0100 Subject: [PATCH 15/18] Changeset: 479 fdbozzo - 10/11/2014 00:08:15: - Restablecer escritura definiciones OLE --- foxbin2prg.prg | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index af42da8..ac22458 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -10503,6 +10503,8 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) + .write_DefinicionObjetosOLE( toFoxBin2Prg ) + *-- Escribo los métodos ordenados lnLastClass = 0 @@ -10750,6 +10752,8 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg .get_NombresObjetosOLEPublic( @la_NombresObjsOle ) + .write_DefinicionObjetosOLE( toFoxBin2Prg ) + *-- Escribo los métodos ordenados lnLastObj = 0 lnLastClass = 0 From f29cf42724d7efadf62d1a3ab30999c3e52f1f06 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 10 Nov 2014 00:40:47 +0100 Subject: [PATCH 16/18] =?UTF-8?q?Changeset:=20481=20fdbozzo=20-=2010/11/20?= =?UTF-8?q?14=2000:29:47:=20-=20Antiguo=20m=C3=A9todo=20de=20OLE=20que=20y?= =?UTF-8?q?a=20no=20se=20usa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 84 +++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index ac22458..e47eebd 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -10300,63 +10300,63 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- Crea la definición del tag *< OLE: /> con la información de todos los objetos OLE LPARAMETERS toFoxBin2Prg - LOCAL lnOLECount, lcOLEChecksum, llOleExistente, loReg + *!* LOCAL lnOLECount, lcOLEChecksum, llOleExistente, loReg - #IF .F. - LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' - #ENDIF + *!* #IF .F. + *!* LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + *!* #ENDIF - TRY - SELECT TABLABIN - SET ORDER TO PARENT_OBJ - lnOLECount = 0 + *!* TRY + *!* SELECT TABLABIN + *!* SET ORDER TO PARENT_OBJ + *!* lnOLECount = 0 - SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND BASECLASS = 'olecontrol' - loReg = NULL - SCATTER MEMO NAME loReg + *!* SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND BASECLASS = 'olecontrol' + *!* loReg = NULL + *!* SCATTER MEMO NAME loReg - IF toFoxBin2Prg.l_NoTimestamps - loReg.TIMESTAMP = 0 - ENDIF - IF toFoxBin2Prg.l_ClearUniqueID - loReg.UNIQUEID = '' - ENDIF + *!* IF toFoxBin2Prg.l_NoTimestamps + *!* loReg.TIMESTAMP = 0 + *!* ENDIF + *!* IF toFoxBin2Prg.l_ClearUniqueID + *!* loReg.UNIQUEID = '' + *!* ENDIF - lcOLEChecksum = SYS(2007, loReg.OLE, 0, 1) - llOleExistente = .F. + *!* lcOLEChecksum = SYS(2007, loReg.OLE, 0, 1) + *!* llOleExistente = .F. - IF lnOLECount > 0 AND ASCAN(laOLE, lcOLEChecksum, 1, 0, 0, 0) > 0 - llOleExistente = .T. - ENDIF + *!* IF lnOLECount > 0 AND ASCAN(laOLE, lcOLEChecksum, 1, 0, 0, 0) > 0 + *!* llOleExistente = .T. + *!* ENDIF - lnOLECount = lnOLECount + 1 - DIMENSION laOLE( lnOLECount ) - laOLE( lnOLECount ) = lcOLEChecksum + *!* lnOLECount = lnOLECount + 1 + *!* DIMENSION laOLE( lnOLECount ) + *!* laOLE( lnOLECount ) = lcOLEChecksum - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT + *!* TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + *!* <<>> + *!* ENDTEXT - ENDSCAN + *!* ENDSCAN - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - * - ENDTEXT + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + * + ENDTEXT - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF + *!* CATCH TO loEx + *!* IF THIS.l_Debug AND _VFP.STARTMODE = 0 + *!* SET STEP ON + *!* ENDIF - THROW + *!* THROW - FINALLY - loReg = NULL - RELEASE loReg + *!* FINALLY + *!* loReg = NULL + *!* RELEASE loReg - ENDTRY + *!* ENDTRY - RETURN + *!* RETURN ENDPROC From 87b0e44975ba5c788dfdfa8f8fc3242e29d15413 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 13 Nov 2014 22:35:27 +0100 Subject: [PATCH 17/18] Changeset: 483 fdbozzo - 13/11/2014 00:00:48: --- foxbin2prg.prg | 128 ++++++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e47eebd..afe63ce 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -4045,6 +4045,70 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + ******************************************************************************************************************* + FUNCTION get_ValueByName_FromListNamesWithValues + *-- ASIGNO EL VALOR DEL ARRAY DE DATOS Y VALORES PARA LA PROPIEDAD INDICADA + LPARAMETERS tcPropName, tcValueType, taPropsAndValues + LOCAL lnPos, luPropValue + + lnPos = ASCAN( taPropsAndValues, tcPropName, 1, 0, 1, 1+2+4+8) + + IF lnPos = 0 OR EMPTY( taPropsAndValues( lnPos, 2 ) ) + *-- Valores no encontrados o vacíos + luPropValue = '' + ELSE + luPropValue = taPropsAndValues( lnPos, 2 ) + ENDIF + + DO CASE + CASE tcValueType = 'I' + luPropValue = CAST( luPropValue AS INTEGER ) + + CASE tcValueType = 'N' + luPropValue = CAST( luPropValue AS DOUBLE ) + + CASE tcValueType = 'T' + luPropValue = CAST( luPropValue AS DATETIME ) + + CASE tcValueType = 'D' + luPropValue = CAST( luPropValue AS DATE ) + + CASE tcValueType = 'E' + luPropValue = EVALUATE( luPropValue ) + + OTHERWISE && Asumo 'C' para lo demás + luPropValue = luPropValue + + ENDCASE + + RETURN luPropValue + ENDFUNC + + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_FoxBin2Prg + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines + + LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LEFT( tcLine + ' ', LEN(C_FB2PRG_META_I) + 1 ) == C_FB2PRG_META_I + ' ' + llBloqueEncontrado = .T. + + *-- Metadatos del módulo + THIS.get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_FB2PRG_META_I, C_FB2PRG_META_F ) + toModulo._Version = THIS.get_ValueByName_FromListNamesWithValues( 'Version', 'N', @laPropsAndValues ) + toModulo._SourceFile = THIS.get_ValueByName_FromListNamesWithValues( 'SourceFile', 'C', @laPropsAndValues ) + ENDIF + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* PROCEDURE createProject @@ -4647,47 +4711,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base - ******************************************************************************************************************* - FUNCTION get_ValueByName_FromListNamesWithValues - *-- ASIGNO EL VALOR DEL ARRAY DE DATOS Y VALORES PARA LA PROPIEDAD INDICADA - LPARAMETERS tcPropName, tcValueType, taPropsAndValues - LOCAL lnPos, luPropValue - - lnPos = ASCAN( taPropsAndValues, tcPropName, 1, 0, 1, 1+2+4+8) - - IF lnPos = 0 OR EMPTY( taPropsAndValues( lnPos, 2 ) ) - *-- Valores no encontrados o vacíos - luPropValue = '' - ELSE - luPropValue = taPropsAndValues( lnPos, 2 ) - ENDIF - - DO CASE - CASE tcValueType = 'I' - luPropValue = CAST( luPropValue AS INTEGER ) - - CASE tcValueType = 'N' - luPropValue = CAST( luPropValue AS DOUBLE ) - - CASE tcValueType = 'T' - luPropValue = CAST( luPropValue AS DATETIME ) - - CASE tcValueType = 'D' - luPropValue = CAST( luPropValue AS DATE ) - - CASE tcValueType = 'E' - luPropValue = EVALUATE( luPropValue ) - - OTHERWISE && Asumo 'C' para lo demás - luPropValue = luPropValue - - ENDCASE - - RETURN luPropValue - ENDFUNC - - - ******************************************************************************************************************* PROCEDURE defined_PAM2Memo *-------------------------------------------------------------------------------------------------------------- @@ -5435,29 +5458,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base - ******************************************************************************************************************* - PROCEDURE analizarBloque_FoxBin2Prg - *------------------------------------------------------ - *-- Analiza el bloque - *------------------------------------------------------ - LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines - - LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count - - IF LEFT( tcLine + ' ', LEN(C_FB2PRG_META_I) + 1 ) == C_FB2PRG_META_I + ' ' - llBloqueEncontrado = .T. - - *-- Metadatos del módulo - THIS.get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_FB2PRG_META_I, C_FB2PRG_META_F ) - toModulo._Version = THIS.get_ValueByName_FromListNamesWithValues( 'Version', 'N', @laPropsAndValues ) - toModulo._SourceFile = THIS.get_ValueByName_FromListNamesWithValues( 'SourceFile', 'C', @laPropsAndValues ) - ENDIF - - RETURN llBloqueEncontrado - ENDPROC - - - ******************************************************************************************************************* PROCEDURE analizarBloque_HIDDEN LPARAMETERS toClase, tcLine From a8ec4da75cd77e7a0804f4768568d074252ab727 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 13 Nov 2014 22:39:29 +0100 Subject: [PATCH 18/18] Changeset: 484 fdbozzo - 13/11/2014 22:35:28: --- foxbin2prg.prg | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index afe63ce..171d322 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -4109,6 +4109,27 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + ******************************************************************************************************************* + PROCEDURE analizarBloque_LIBCOMMENT + *------------------------------------------------------ + *-- Analiza el bloque * + *------------------------------------------------------ + LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines + + LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LEFT( tcLine, LEN(C_LIBCOMMENT_I) ) == C_LIBCOMMENT_I + llBloqueEncontrado = .T. + + *-- Metadatos del módulo + toModulo._Comment = ALLTRIM( STREXTRACT( tcLine, C_LIBCOMMENT_I, C_LIBCOMMENT_F ) ) + ENDIF + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* PROCEDURE createProject @@ -5625,27 +5646,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base - ******************************************************************************************************************* - PROCEDURE analizarBloque_LIBCOMMENT - *------------------------------------------------------ - *-- Analiza el bloque * - *------------------------------------------------------ - LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines - - LOCAL llBloqueEncontrado, laPropsAndValues(1,2), lnPropsAndValues_Count - - IF LEFT( tcLine, LEN(C_LIBCOMMENT_I) ) == C_LIBCOMMENT_I - llBloqueEncontrado = .T. - - *-- Metadatos del módulo - toModulo._Comment = ALLTRIM( STREXTRACT( tcLine, C_LIBCOMMENT_I, C_LIBCOMMENT_F ) ) - ENDIF - - RETURN llBloqueEncontrado - ENDPROC - - - ******************************************************************************************************************* PROCEDURE analizarBloque_OBJECTMETADATA LPARAMETERS toClase, tcLine