From abba3537055019e162747085ffd4a74cdd582ca7 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 2 Feb 2014 17:50:08 +0100 Subject: [PATCH] =?UTF-8?q?Changeset:=20153=20-=20Nuevo=20par=C3=A1metro?= =?UTF-8?q?=20cNoTimestamps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 340608 -> 341760 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 419 +++++++++++++++++++++++++++++-------------------- 4 files changed, 251 insertions(+), 172 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 77e5c4c..0c6eca2 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 222" +_Revision = " 226" _LanguageID = "1034" _AutoIncrement = "1" * @@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145207292" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145212368" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 71b32ee6681461f0ed31c94783a5083da5af2e1d..b05d3d260453169ecfc6f5fd62f1ea8c0963b0bf 100644 GIT binary patch delta 19935 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 C2@HV% delta 18963 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 Rwgw#krim^hMA_eg{vV69t(5=( diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 616291a8485a133e59d29ea9944709f9059878f1..5e305c57f2320d8a87cf327f78acf5fb6fbc89f5 100644 GIT binary patch delta 27 hcmZ3_vz}+eUKUnEBV%)e$%k0}gIH!3laH}x0sw&J2@(JR delta 27 icmZ3_vz}+eUKUmZa}y(z$%k0}16f9vMw5@RW&!|#H3=2~ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3c7a3c4..0688a03 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -112,7 +112,7 @@ * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- -LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile +LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile, tcNoTimestamps *-- Internacionalización / Internationalization *-- Fin / End @@ -311,7 +311,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb ******************************************************************************************************************* LOCAL loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' -LOCAL lnResp, loEx as Exception +LOCAL lnResp, loEx AS EXCEPTION *SYS(2030,1) *SYS(2335,0) @@ -323,7 +323,7 @@ LOCAL lnResp, loEx as Exception loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; - , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) + , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) *IF _VFP.STARTMODE <= 1 @@ -384,6 +384,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -412,6 +413,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. l_ShowProgress = .F. l_Recompile = .F. + l_UseTimestamps = .T. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias @@ -465,7 +467,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * Using Win32 Functions in Visual FoxPro * example=103 * Changing file attributes - LPARAMETERS tcFilename, tcAttrib + LPARAMETERS tcFileName, tcAttrib tcAttrib = UPPER(tcAttrib) #DEFINE FILE_ATTRIBUTE_READONLY 1 @@ -481,7 +483,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DECLARE INTEGER GetFileAttributes IN kernel32 STRING tcFileName * read current attributes for this file - dwFileAttributes = GetFileAttributes(tcFilename) + dwFileAttributes = GetFileAttributes(tcFileName) IF dwFileAttributes = -1 * the file does not exist @@ -540,32 +542,32 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF * setting selected attributes - =SetFileAttributes(tcFilename, dwFileAttributes) + =SetFileAttributes(tcFileName, dwFileAttributes) ENDIF ENDPROC PROCEDURE compileFoxProBinary - LPARAMETERS tcFilename + LPARAMETERS tcFileName LOCAL lcType - tcFilename = EVL(tcFilename, THIS.c_OutputFile) - lcType = UPPER(JUSTEXT(tcFilename)) + tcFileName = EVL(tcFileName, THIS.c_OutputFile) + lcType = UPPER(JUSTEXT(tcFileName)) DO CASE CASE lcType = 'VCX' - COMPILE CLASSLIB (tcFilename) + COMPILE CLASSLIB (tcFileName) CASE lcType = 'SCX' - COMPILE FORM (tcFilename) + COMPILE FORM (tcFileName) CASE lcType = 'FRX' - COMPILE REPORT (tcFilename) + COMPILE REPORT (tcFileName) CASE lcType = 'LBX' - COMPILE LABEL (tcFilename) + COMPILE LABEL (tcFileName) CASE lcType = 'DBC' - COMPILE DATABASE (tcFilename) + COMPILE DATABASE (tcFileName) ENDCASE ENDPROC @@ -583,7 +585,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3 #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -682,9 +684,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * se hace desde el directorio del archivo, con lo que las referencias relativas pueden * generar errores de compilación, típicamente los #include. * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar + * tcNoTimestamps (v? IN ) Indica si se deben vacar ('1') o no ['0'] los timestamps de registro *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; - , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile + , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; @@ -692,8 +695,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject - lnCodError = 0 - tcRecompile = EVL(tcRecompile,'1') + lnCodError = 0 + tcRecompile = EVL(tcRecompile,'1') + tcNoTimestamps = EVL(tcNoTimestamps,'0') *SET DELETED ON *SET DATE YMD @@ -723,8 +727,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Ejecución normal THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - *THIS.l_Recompile = (NOT EMPTY(tcRecompile) AND (TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))) THIS.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) + THIS.l_UseTimestamps = (EMPTY(tcNoTimestamps) OR TRANSFORM(tcNoTimestamps) == '0') THIS.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(THIS.c_Foxbin2prg_FullPath,'LOG'))) IF THIS.l_ShowProgress @@ -814,7 +818,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE lnCodError = -1 ENDCASE - + ELSE IF EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' @@ -857,7 +861,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE CATCH TO toEx - lnCodError = toEx.ErrorNo + lnCodError = toEx.ERRORNO lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) @@ -1559,11 +1563,11 @@ DEFINE CLASS c_conversor_base AS SESSION * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF THIS.writeLog( '' ) THIS.writeLog( C_CONVERTING_FILE_LOC + ' ' + THIS.c_OutputFile + '...' ) @@ -2469,11 +2473,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) ENDPROC @@ -2640,8 +2644,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Validación IF EMPTY(taBloquesExclusion(tnBloquesExclusion,2)) *ERROR 'No se ha encontrado el marcador de fin [' + ta_ID_Bloques(lnPrimerID,2) ; - + '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ; - + '] de la línea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1)) + + '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ; + + '] de la línea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1)) ERROR (TEXTMERGE(C_END_MARKER_NOT_FOUND_LOC)) ENDIF ENDIF @@ -3329,7 +3333,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE insert_Object - LPARAMETERS toClase, toObjeto + LPARAMETERS toClase, toObjeto, toFoxBin2Prg + + #IF .F. + LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' + #ENDIF IF NOT THIS.l_Test *-- Inserto el objeto @@ -3359,7 +3369,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base VALUES ; ( 'WINDOWS' ; , toObjeto._UniqueID ; - , toObjeto._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, toObjeto._TimeStamp, 0 ) ; , toObjeto._Class ; , toObjeto._ClassLib ; , toObjeto._BaseClass ; @@ -3388,10 +3398,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Recorro primero los objetos con ZOrder definido, y luego los demás *-- NOTA: Como consecuencia de una integración de código, puede que se hayan agregado objetos nuevos (desconocidos), *-- pero todo lo demás tiene un ZOrder definido, que es el número de registro original * 100. - LPARAMETERS toClase + LPARAMETERS toClase, toFoxBin2Prg #IF .F. LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -3421,7 +3432,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base IF loObjeto._WriteOrder = 0 AND loObjeto._Nombre == lcObjName N = N + 1 loObjeto._WriteOrder = N - THIS.insert_Object( toClase, loObjeto ) + THIS.insert_Object( toClase, loObjeto, toFoxBin2Prg ) EXIT ENDIF ENDFOR @@ -3431,7 +3442,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Recorro los objetos Desconocidos FOR EACH loObjeto IN toClase._AddObjects FOXOBJECT IF loObjeto._WriteOrder = 0 - THIS.insert_Object( toClase, loObjeto ) + THIS.insert_Object( toClase, loObjeto, toFoxBin2Prg ) ENDIF ENDFOR @@ -3493,13 +3504,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado IF llEsProcedureDeClase *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontró ENDDEFINE en la clase ' ; - + toClase._Nombre + ' (' + loProcedure._Nombre + ')' ; - + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + + toClase._Nombre + ' (' + loProcedure._Nombre + ')' ; + + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC)) ELSE *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontró ENDDEFINE en la clase ' ; - + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; - + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; + + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC)) ENDIF ENDCASE @@ -3851,9 +3862,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Validación IF EMPTY( toClase._Fin ) *ERROR 'No se ha encontrado el marcador de fin [ENDDEFINE] ' ; - + 'que cierra al marcador de inicio [DEFINE CLASS] ' ; - + 'de la línea ' + TRANSFORM( toClase._Inicio ) + ' ' ; - + 'para el identificador [' + toClase._Nombre + ']' + + 'que cierra al marcador de inicio [DEFINE CLASS] ' ; + + 'de la línea ' + TRANSFORM( toClase._Inicio ) + ' ' ; + + 'para el identificador [' + toClase._Nombre + ']' ERROR (TEXTMERGE(C_ENDDEFINE_MARKER_NOT_FOUND_LOC)) ENDIF @@ -4280,11 +4291,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -4298,7 +4309,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la librería THIS.createClasslib() @@ -4309,7 +4320,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toModulo ) - THIS.escribirArchivoBin( @toModulo, toFoxbin2prg ) + THIS.escribirArchivoBin( @toModulo, toFoxBin2Prg ) CATCH TO toEx @@ -4329,7 +4340,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toModulo, toFoxbin2prg + LPARAMETERS toModulo, toFoxBin2Prg *-- Estructura del objeto toModulo generado: *-- ----------------------------------------------------------------------------------------------------------- *-- Version Versión usada para generar la versión PRG analizada @@ -4397,7 +4408,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4419,8 +4430,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin loClase = toModulo._Clases(I) *-- El dataenvironment debe estar primero, luego lo demás. - IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; - OR X = 2 AND loClase._baseclass == 'dataenvironment' + IF X = 1 AND NOT loClase._BaseClass == 'dataenvironment' ; + OR X = 2 AND loClase._BaseClass == 'dataenvironment' LOOP ENDIF @@ -4451,7 +4462,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin VALUES ; ( 'WINDOWS' ; , loClase._UniqueID ; - , loClase._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loClase._TimeStamp, 0 ) ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -4473,7 +4484,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase, toFoxBin2Prg ) *-- Inserto el COMMENT @@ -4529,8 +4540,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -4569,11 +4580,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -4587,7 +4598,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo el form THIS.createForm() @@ -4598,7 +4609,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toModulo ) - THIS.escribirArchivoBin( @toModulo, toFoxbin2prg ) + THIS.escribirArchivoBin( @toModulo, toFoxBin2Prg ) CATCH TO toEx @@ -4618,7 +4629,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toModulo, toFoxbin2prg + LPARAMETERS toModulo, toFoxBin2Prg *-- Estructura del objeto toModulo generado: *-- ----------------------------------------------------------------------------------------------------------- *-- Version Versión usada para generar la versión PRG analizada @@ -4686,7 +4697,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4708,10 +4719,10 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FOR I = 1 TO toModulo._Clases_Count loClase = toModulo._Clases(I) - + *-- El dataenvironment debe estar primero, luego lo demás. - IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; - OR X = 2 AND loClase._baseclass == 'dataenvironment' + IF X = 1 AND NOT loClase._BaseClass == 'dataenvironment' ; + OR X = 2 AND loClase._BaseClass == 'dataenvironment' LOOP ENDIF @@ -4742,7 +4753,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin VALUES ; ( 'WINDOWS' ; , loClase._UniqueID ; - , loClase._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loClase._TimeStamp, 0 ) ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -4764,7 +4775,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase, toFoxBin2Prg ) ENDFOR && I = 1 TO toModulo._Clases_Count ENDFOR && X = 1 TO 2 @@ -4819,8 +4830,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -4866,14 +4877,14 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toProject (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toProject, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toProject, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toProject, @toEx ) #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4886,7 +4897,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo solo la cabecera del proyecto THIS.createProject() @@ -4897,7 +4908,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toProject ) - THIS.escribirArchivoBin( @toProject ) + THIS.escribirArchivoBin( @toProject, toFoxBin2Prg ) CATCH TO toEx @@ -4917,10 +4928,11 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toProject + LPARAMETERS toProject, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4992,7 +5004,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin , .T. ; , loFile._CPID ; , loFile._ID ; - , loFile._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loFile._TimeStamp, 0 ) ; , loFile._ObjRev ; , UPPER(JUSTSTEM(loFile._Name)) ) ENDFOR @@ -5589,14 +5601,14 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toReport (@! OUT) Objeto generado de clase CL_REPORT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toReport, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toReport, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toReport, @toEx ) #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -5609,7 +5621,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo el reporte THIS.createReport() @@ -5617,7 +5629,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toReport ) - THIS.escribirArchivoBin( @toReport, toFoxbin2prg ) + THIS.escribirArchivoBin( @toReport, toFoxBin2Prg ) CATCH TO loEx @@ -5639,11 +5651,11 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toReport, toFoxbin2prg + LPARAMETERS toReport, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -5655,6 +5667,10 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin *-- Agrego los registros FOR EACH loReg IN toReport FOXOBJECT + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + *-- Ajuste de los tipos de dato FOR I = 1 TO AMEMBERS(laProps, loReg, 0) lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 ) @@ -5692,8 +5708,8 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -5987,14 +6003,14 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toTable (@! OUT) Objeto generado de clase CL_TABLE con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toTable, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toTable, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toTable, @toEx ) #IF .F. LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6007,7 +6023,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toTable ) @@ -6255,14 +6271,14 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toDatabase, @toEx ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6275,7 +6291,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la tabla *THIS.createTable() @@ -6283,7 +6299,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toDatabase ) - THIS.escribirArchivoBin( @toDatabase, toFoxbin2prg ) + THIS.escribirArchivoBin( @toDatabase, toFoxBin2Prg ) CATCH TO loEx @@ -6305,11 +6321,11 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toDatabase, toFoxbin2prg + LPARAMETERS toDatabase, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6319,8 +6335,8 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin toDatabase.updateDBC( THIS.c_OutputFile ) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -6425,14 +6441,14 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toMenu (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toMenu, @toEx ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6445,7 +6461,7 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la tabla THIS.createMenu() @@ -6630,11 +6646,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) ENDPROC @@ -7951,8 +7967,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_DefinicionObjetosOLE *-- Crea la definición del tag *< OLE: /> con la información de todos los objetos OLE + LPARAMETERS toFoxBin2Prg + LOCAL lnOLECount, lcOLEChecksum, llOleExistente, loReg + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + TRY SELECT TABLABIN SET ORDER TO PARENT_OBJ @@ -7960,6 +7982,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND BASECLASS = 'olecontrol' SCATTER MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + lcOLEChecksum = SYS(2007, loReg.OLE, 0, 1) llOleExistente = .F. @@ -8074,11 +8101,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8096,11 +8123,11 @@ 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() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - THIS.write_DefinicionObjetosOLE() + THIS.write_DefinicionObjetosOLE( toFoxBin2Prg ) *-- Escribo los métodos ordenados lnLastClass = 0 @@ -8113,6 +8140,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" SCATTER MEMO NAME loRegClass + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegClass.TIMESTAMP = 0 + ENDIF + lcObjName = ALLTRIM(loRegClass.OBJNAME) THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) @@ -8136,6 +8168,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) ENDSCAN @@ -8162,6 +8199,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) ENDSCAN @@ -8176,13 +8218,13 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8219,14 +8261,14 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toModulo, @toEx ) #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -8246,11 +8288,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *toModulo = NULL *toModulo = CREATEOBJECT('CL_MODULO') - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - THIS.write_DefinicionObjetosOLE() + THIS.write_DefinicionObjetosOLE( toFoxBin2Prg ) *-- Escribo los métodos ordenados lnLastObj = 0 @@ -8279,7 +8321,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *loRegClass = NULL SCATTER MEMO NAME loRegClass - *toModulo.add_Class( loRegClass ) + lcObjName = ALLTRIM(loRegClass.OBJNAME) THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) @@ -8303,6 +8345,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) ENDSCAN @@ -8331,6 +8378,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) ENDSCAN @@ -8345,13 +8397,13 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8390,11 +8442,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8417,6 +8469,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Obtengo los archivos del proyecto loProject = CREATEOBJECT('CL_PROJECT') SCATTER MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + loProject._HomeDir = ['] + ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.HOMEDIR ) ) + ['] loProject._ServerInfo = loReg.RESERVED2 @@ -8453,6 +8510,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Escaneo el proyecto SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + loReg.NAME = LOWER( ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.NAME ) ) ) loReg.COMMENTS = ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.COMMENTS ) ) @@ -8469,7 +8531,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg ENDSCAN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Directorio de inicio @@ -8656,13 +8718,13 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8706,11 +8768,11 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8844,7 +8906,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg ENDFOR - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Directorio de inicio @@ -9028,13 +9090,13 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9083,11 +9145,11 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -9106,18 +9168,30 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg LOCATE FOR ObjType = 1 IF FOUND() SCATTER MEMO NAME loRegCab + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegCab.TIMESTAMP = 0 + ENDIF ENDIF *-- Dataenvironment LOCATE FOR ObjType = 25 IF FOUND() SCATTER MEMO NAME loRegDataEnv + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegDataEnv.TIMESTAMP = 0 + ENDIF ENDIF *-- Cursor1 (żpuede haber más de 1 cursor?) LOCATE FOR ObjType = 26 IF FOUND() SCATTER MEMO NAME loRegCur + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegCur.TIMESTAMP = 0 + ENDIF ENDIF IF THIS.l_ReportSort_Enabled @@ -9137,7 +9211,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg USE IN (SELECT("TABLABIN_0")) - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Recorro los registros y genero el texto IF VARTYPE(loRegCab) = "O" @@ -9149,6 +9223,11 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg SCAN ALL SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.write_DETALLE_REPORTE( @loRegObj ) ENDSCAN @@ -9165,13 +9244,13 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9209,11 +9288,11 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Contenido del texto generado * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -9232,7 +9311,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Header loTable = CREATEOBJECT('CL_DBF_TABLE') @@ -9243,13 +9322,13 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9261,11 +9340,11 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg DO CASE CASE toEx.ERRORNO = 13 && Alias not found *toEx.USERVALUE = 'WARNING!!' + CR_LF ; - + 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ; - + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; - + 'ˇˇATENCIÓN!!' + CR_LF ; - + 'ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on ' ; - + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)' + + 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ; + + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; + + 'ˇˇATENCIÓN!!' + CR_LF ; + + 'ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on ' ; + + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)' toEx.USERVALUE = TEXTMERGE(C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC) *!* CASE toEx.ErrorNo = 1976 && Cannot resolve backlink @@ -9314,14 +9393,14 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toDatabase, @toEx ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -9334,7 +9413,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN OPEN DATABASE (THIS.c_InputFile) SHARED NOUPDATE - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Header toDatabase = CREATEOBJECT('CL_DBC') @@ -9345,13 +9424,13 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9389,14 +9468,14 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * totoMenu (@! OUT) Objeto generado de clase CL_MENU con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toMenu, @toEx ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -9414,7 +9493,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg ENDIF *-- Header - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() toMenu = CREATEOBJECT('CL_MENU') toMenu.get_DataFromTablabin() @@ -9425,13 +9504,13 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toMenu = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.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( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9752,7 +9831,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE _ProtectedMethods = '' _MetaData = '' _BaseClass = '' - _TimeStamp = '' + _TimeStamp = 0 _Scale = '' _Defined_PAM = '' _includeFile = '' @@ -15498,7 +15577,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE ELSE IF THIS.l_Debug *toConversor.writeLog( REPLICATE(C_TAB,tnNivel) ; - + 'Objeto [' + toObj.CLASS + '] no contiene el objeto oReg (nivel ' + TRANSFORM(tnNivel) + ')' ) + + 'Objeto [' + toObj.CLASS + '] no contiene el objeto oReg (nivel ' + TRANSFORM(tnNivel) + ')' ) toConversor.writeLog( REPLICATE(C_TAB,tnNivel) + TEXTMERGE(C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC) ) ENDIF