From 0d740a6a36c9cab0f9c61d5a5e58473a63b8f8c0 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 1 Mar 2015 17:46:43 +0100 Subject: [PATCH 01/37] =?UTF-8?q?Changeset:=20649=20-=20Bug=20Fix=20scx/vc?= =?UTF-8?q?x:=20Procesar=20solo=20un=20nivel=20de=20text/endtext,=20ya=20q?= =?UTF-8?q?ue=20no=20se=20admiten=20m=C3=A1s=20niveles=20(Lutz=20Scheffler?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...or_base__IdentificarBloquesDeExclusion.prg | 108 +++++++++++++++++- foxbin2prg.prg | 45 ++++---- 2 files changed, 132 insertions(+), 21 deletions(-) diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg index 8d47e20..cfffd4d 100644 --- a/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg +++ b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg @@ -11,9 +11,11 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as #DEFINE C_IF_F '#IF' #DEFINE C_ENDIF '#ENDIF' icObj = NULL + icFB = NULL ******************************************************************************************************************************************* FUNCTION Setup + THIS.icFB = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") THIS.icObj = NEWOBJECT("c_conversor_prg_a_bin", "FOXBIN2PRG.PRG") ENDFUNC @@ -22,6 +24,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as ******************************************************************************************************************************************* FUNCTION TearDown THIS.icObj = NULL + THIS.icFB = NULL ENDFUNC @@ -85,7 +88,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as laLineasExclusion_Esperadas( 3) = .T. laLineasExclusion_Esperadas( 4) = .T. laLineasExclusion_Esperadas( 5) = .T. - laLineasExclusion_Esperadas( 7) = .T. + laLineasExclusion_Esperadas( 6) = .T. laLineasExclusion_Esperadas( 8) = .T. laLineasExclusion_Esperadas( 9) = .T. laLineasExclusion_Esperadas(10) = .T. @@ -117,6 +120,56 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_ObtenerLaUbicacionDelBloque_IF_ENDIF_externo_CuandoOtros_IF_ENDIF_internos_sonEvaluados + LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2) ; + , laLineasExclusion(14), laLineasExclusion_Esperadas(14) + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + *-- Input and expected params + STORE '' TO lcMethod + laExpected_Pos(1,1) = 3 + laExpected_Pos(1,2) = 13 + laLineasExclusion_Esperadas( 3) = .T. + laLineasExclusion_Esperadas( 4) = .T. + laLineasExclusion_Esperadas( 5) = .T. + laLineasExclusion_Esperadas( 7) = .T. + laLineasExclusion_Esperadas( 8) = .T. + laLineasExclusion_Esperadas( 9) = .T. + laLineasExclusion_Esperadas(10) = .T. + laLineasExclusion_Esperadas(11) = .T. + laLineasExclusion_Esperadas(12) = .T. + laLineasExclusion_Esperadas(13) = .T. + + TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2 + <> myMethod_B + *-- Code Block + <> + <> + <> + value ; + <> + *-- Code Block + <> + value , + <> + <> + <> + <> + ENDTEXT + + lnLineas = ALINES( laLineas, lcMethod ) + + *-- Test + loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laLineasExclusion, @lnPos_Count, @laPos ) + + *-- Evaluación de resultados + THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count, @laLineasExclusion_Esperadas, @laLineasExclusion ) + + ENDFUNC + + ******************************************************************************************************************************************* FUNCTION Deberia_ObtenerLaUbicacionDelBloque_IF_ENDIF_Externo_CuandoCodigoCon_IF_ENDIF_predominante_esEvaluado LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2) ; @@ -208,6 +261,59 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_ObtenerLaUbicacionDelBloque_TEXT_ENDTEXT_CuandoCodigoConteniendo_TEXT_esEvaluado + LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(3,2) ; + , laLineasExclusion(14), laLineasExclusion_Esperadas(14) + LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + *-- Input and expected params + STORE '' TO lcMethod + laExpected_Pos(1,1) = 3 + laExpected_Pos(1,2) = 5 + laExpected_Pos(2,1) = 7 + laExpected_Pos(2,2) = 9 + laExpected_Pos(3,1) = 11 + laExpected_Pos(3,2) = 13 + laLineasExclusion_Esperadas( 3) = .T. + laLineasExclusion_Esperadas( 4) = .T. + laLineasExclusion_Esperadas( 5) = .T. + laLineasExclusion_Esperadas( 7) = .T. + laLineasExclusion_Esperadas( 8) = .T. + laLineasExclusion_Esperadas( 9) = .T. + laLineasExclusion_Esperadas(11) = .T. + laLineasExclusion_Esperadas(12) = .T. + laLineasExclusion_Esperadas(13) = .T. + + TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2 + <> myMethod_B + *-- Code Block + <> + <> + <> + *-- Code Block + <> + <> ; + <> + *-- Code Block + <> + <> , + <> + <> + ENDTEXT + + lnLineas = ALINES( laLineas, lcMethod ) + + *-- Test + loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laLineasExclusion, @lnPos_Count, @laPos ) + + *-- Evaluación de resultados + THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count, @laLineasExclusion_Esperadas, @laLineasExclusion ) + + ENDFUNC + + ******************************************************************************************************************************************* FUNCTION Deberia_NoEncontrarBloque_TEXT_ENDTEXT_CuandoEvaluaUnaLineaQueComienzaConUnCampoLlamado_Text_YLineaAnteriorTerminaEn_PuntoYComa LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e2bf2eb..3b51f22 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -132,6 +132,7 @@ * 13/01/2015 FDBOZZO v1.19.41 Bug Fix scx/vcx: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros en LPARAMETERS (Ryan Harris) * 13/01/2015 FDBOZZO v1.19.41 Bug Fix db2: Detección errónea de tabla inválida cuando el tamaño es inferior a 328 bytes. Límite mínimo cambiado a 65 bytes. * 20/01/2015 FDBOZZO v1.19.42 Mejora: Validación de versión de Visual FoxPro, para evitar problemas ajenos a FoxBin2Prg +* 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -192,6 +193,7 @@ * 06/01/2015 Jim Nelson Mejora v1.19.39: Permitir configurar la barra de progreso para que solamente aparezca cuando se procesan múltiples archivos y no cuando se procesa solo 1 (Agregado en v1.19.40) * 06/01/2015 Mike Potjer Reporte bug db2: [Error 12, Variable "TCOUTPUTFILE" is not found] cuando DBF_Conversion_Support=4 y el archivo de salida es igual al generado (Agregado en v1.19.40) * 13/01/2015 Ryan Harris Reporte bug vcx/scx v1.19.40: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros LPARAMETERS en línea aparte (Arreglado en v1.19.41) +* 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -1925,7 +1927,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *ENDIF IF VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504 - ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC + ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC ENDIF *-- Determino el tipo de InputFile (Archivo o Directorio) @@ -2501,7 +2503,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- VERIFICO SI HAY ARCHIVO DE CONFIGURACIÓN SECUNDARIO .EvaluarConfiguracion() - + IF .n_ForceWriteIfReadOnly = 1 THEN lcForceAttribs = lcForceAttribs + '-R' ENDIF @@ -4075,7 +4077,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION IF tnIniFin = 1 *-- TOKENS DE INICIO - IF UPPER( LEFT( lcLine, LEN(ta_ID_Bloques(X,1)) ) ) == ta_ID_Bloques(X,1) + IF UPPER( LEFT( lcLine, ta_ID_Bloques(X,3) ) ) == ta_ID_Bloques(X,1) *-- Evaluar casos especiales lcWord = UPPER( ALLTRIM(GETWORDNUM(lcLine,1) ) ) @@ -4096,7 +4098,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION ENDIF ELSE *-- TOKENS DE FIN - IF LEFT( UPPER( lcLine ), tnLen_IDFinBQ ) == ta_ID_Bloques(X,2) && Fin de bloque encontrado (#ENDI, ENDTEXT, etc) + IF LEFT( UPPER( lcLine ), ta_ID_Bloques(X,4) ) == ta_ID_Bloques(X,2) && Fin de bloque encontrado (#ENDI, ENDTEXT, etc) *-- Evaluar casos especiales lcWord = UPPER( ALLTRIM(GETWORDNUM(lcLine,1) ) ) @@ -4284,7 +4286,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * tnTimeStamp (v! IN ) Timestamp en formato numérico *--------------------------------------------------------------------------------------------------- - LPARAMETERS tnTimeStamp + LPARAMETERS tnTimestamp *-- CONVIERTE UN DATO TIMESTAMP NUMERICO USADO POR LOS ARCHIVOS SCX/VCX/etc. EN TIPO DATETIME TRY LOCAL lcTimeStamp,lnYear,lnMonth,lnDay,lnHour,lnMinutes,lnSeconds,lcTime,lnHour,ltTimeStamp,lnResto ; @@ -4292,7 +4294,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION lcTimeStamp_Ret = '' - IF EMPTY(tnTimeStamp) + IF EMPTY(tnTimestamp) IF THIS.lFileMode IF ADIR(laDirInfo,THIS.c_InputFile)=0 EXIT @@ -4310,15 +4312,15 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION EXIT ENDIF - tnTimeStamp = THIS.n_ClassTimeStamp + tnTimestamp = THIS.n_ClassTimeStamp - IF EMPTY(tnTimeStamp) + IF EMPTY(tnTimestamp) EXIT ENDIF ENDIF *-- YYYY YYYM MMMD DDDD HHHH HMMM MMMS SSSS - lnResto = tnTimeStamp + lnResto = tnTimestamp lnYear = INT( lnResto / 2**25 + 1980) lnResto = lnResto % 2**25 lnMonth = INT( lnResto / 2**21 ) @@ -4524,15 +4526,19 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang DIMENSION taLineasExclusion(tnCodeLines), taBloquesExclusion(1,2) - STORE 0 TO tnBloquesExclusion, lnPrimerID, I, X, lnLen_IDFinBQ + STORE 0 TO tnBloquesExclusion, lnPrimerID, I, X IF tnCodeLines > 1 IF EMPTY(ta_ID_Bloques) - DIMENSION ta_ID_Bloques(2,2) + DIMENSION ta_ID_Bloques(2,4) ta_ID_Bloques(1,1) = '#IF' ta_ID_Bloques(1,2) = '#ENDI' + ta_ID_Bloques(1,3) = LEN( ta_ID_Bloques(1,1) ) + ta_ID_Bloques(1,4) = LEN( ta_ID_Bloques(1,2) ) ta_ID_Bloques(2,1) = 'TEXT' ta_ID_Bloques(2,2) = 'ENDT' + ta_ID_Bloques(2,3) = LEN( ta_ID_Bloques(2,1) ) + ta_ID_Bloques(2,4) = LEN( ta_ID_Bloques(2,2) ) lnID_Bloques_Count = ALEN( ta_ID_Bloques, 1 ) ENDIF @@ -4563,7 +4569,6 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION IF lnPrimerID > 0 && Se ha identificado un ID de bloque excluyente tnBloquesExclusion = tnBloquesExclusion + 1 - lnLen_IDFinBQ = LEN( ta_ID_Bloques(lnPrimerID,2) ) DIMENSION taBloquesExclusion(tnBloquesExclusion,2) taBloquesExclusion(tnBloquesExclusion,1) = I taLineasExclusion(I) = .T. @@ -4579,12 +4584,12 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION ENDIF DO CASE - CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 1 ) ; + CASE lnPrimerID = 1 AND .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, 0, X, 1 ) ; AND NOT .currentLineIsPreviousLineContinuation( @taCodeLines, I ) - *-- Busca el primer marcador (#IF o TEXT) + *-- Busca el primer marcador (#IF) NOTA: No busco [TEXT] porque no se pueden anidar. lnAnidamientos = lnAnidamientos + 1 - CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 2 ) + CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, 0, X, 2 ) *-- Busca el segundo marcador (#ENDIF o ENDTEXT) lnAnidamientos = lnAnidamientos - 1 @@ -4616,7 +4621,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION FINALLY RELEASE taCodeLines, tnCodeLines, ta_ID_Bloques, taLineasExclusion, tnBloquesExclusion, taBloquesExclusion, loLang ; - , lnBloques, I, X, lnPrimerID, lnLen_IDFinBQ, lnID_Bloques_Count, lcWord, lnAnidamientos, lcLine, lcPrevLine + , lnBloques, I, X, lnPrimerID, lnID_Bloques_Count, lcWord, lnAnidamientos, lcLine, lcPrevLine ENDTRY RETURN @@ -4732,11 +4737,11 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION FUNCTION RowTimeStamp(ltDateTime) * Generate a FoxPro 3.0-style row timestamp *-- CONVIERTE UN DATO TIPO DATETIME EN TIMESTAMP NUMERICO USADO POR LOS ARCHIVOS SCX/VCX/etc. - LOCAL lcTimeValue, tnTimeStamp + LOCAL lcTimeValue, tnTimestamp TRY IF EMPTY(ltDateTime) - tnTimeStamp = 0 + tnTimestamp = 0 EXIT ENDIF @@ -4744,7 +4749,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION m.ltDateTime = DATETIME() ENDIF - tnTimeStamp = ( YEAR(m.ltDateTime) - 1980) * 2^25 ; + tnTimestamp = ( YEAR(m.ltDateTime) - 1980) * 2^25 ; + MONTH(m.ltDateTime) * 2^21 ; + DAY(m.ltDateTime) * 2^16 ; + HOUR(m.ltDateTime) * 2^11 ; @@ -4752,7 +4757,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION + SEC(m.ltDateTime) ENDTRY - RETURN INT(tnTimeStamp) + RETURN INT(tnTimestamp) ENDFUNC From d5e7165858fc2d278ce4459cb827404d33f11367 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 1 Mar 2015 18:13:52 +0100 Subject: [PATCH 02/37] =?UTF-8?q?Changeset:=20651=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20proyecto=20a=20v1.19.42?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.pj2 | 8 +++++++- foxbin2prg.pjt | Bin 676814 -> 701424 bytes foxbin2prg.pjx | Bin 9123 -> 9513 bytes 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index be83bd0..085a6e4 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = "FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = "41" +_Revision = "42" _LanguageID = "1034" _AutoIncrement = "0" * @@ -93,6 +93,8 @@ WITH loProject.FILES .ADD('props_xmltable.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('readme.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> .ADD('tests\foxunit_path.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" /> + .ADD('tests\ft__foxbin2prg__c_conversor_bin_a_prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_bin.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_dbc.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_dbf.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ft__foxbin2prg__c_conversor_prg_a_mnx.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> @@ -101,6 +103,7 @@ WITH loProject.FILES .ADD('tests\ut__foxbin2prg__c_conversor_base__dobackup.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> + .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> @@ -122,6 +125,8 @@ WITH loProject.FILES * .ITEM(lcCurdir + 'readme.txt').Exclude = .T. .ITEM(lcCurdir + 'tests\foxunit_path.txt').Exclude = .T. + .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_bin_a_prg.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_bin.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_dbc.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_dbf.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ft__foxbin2prg__c_conversor_prg_a_mnx.prg').Exclude = .T. @@ -130,6 +135,7 @@ WITH loProject.FILES .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__dobackup.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg').Exclude = .T. + .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg').Exclude = .T. diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 8d4a53a352b9297e5369b38dc8a9e692ad653cba..a59905a0cce9289af2fdd85a7746e41245be0d8b 100644 GIT binary patch delta 45044 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 VyXUvnyBB^q%PYT>%uk@-`M*aGx5oeg delta 28897 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 delta 255 zcmZ4Kwb-52fS-}qb|dRn77lZB69XedGt!>un9b4VE8RCd7n%J(+>U34zf&)oO>jJ+KnxM78kP1PyQgUI=Np?ki*o{*xc08 z&~Wks85ypf&l!PAOw5340_2@13(A{vF24X2QZP3#nB2$>*0p)E{9GnBpe8c|bD$;( h-f}|*2G=@}(+q$jAg6th7n(dlnP>A1B`!urDFAt%M9TmG From 58595c830477891c6813ac283de2f2ee5d0f0a57 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 1 Mar 2015 19:34:10 +0100 Subject: [PATCH 03/37] =?UTF-8?q?Changeset:=20652=20Actualizaci=C3=B3n=20d?= =?UTF-8?q?el=20archivo=20de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 5d34353..d3aba30 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.41' - .VersionDate = Date(2015,01,18) + .VersionNumber = 'v1.19.42' + .VersionDate = Date(2015,03,01) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,6 +17,11 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2015/03/01 v1.19.42 +- Added VFP 9 SP1 runtime validation +- Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) +- Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) + 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. - Bug Fix vcx/scx: Erroneous detection of PROCEDURE/ENDPROC structures when used as parameters of LPARAMETERS and start in new line (Ryan Harris) From 3e704c439d27ef3eb21a4f06bdac424dd86ffb91 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 2 Mar 2015 00:59:54 +0100 Subject: [PATCH 04/37] =?UTF-8?q?Changeset:=20654=20-=20Mejorada=20la=20in?= =?UTF-8?q?formaci=C3=B3n=20de=20algunos=20errores=20para=20intentar=20des?= =?UTF-8?q?cribir=20la=20ubicaci=C3=B3n=20con=20m=C3=A1s=20precisi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 112 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 100 insertions(+), 12 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3b51f22..65e6536 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2412,6 +2412,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DO CASE CASE ATC('-SHOWMSG', ('-' + tcType)) >= 1 + THIS.writeErrorLog_Flush() DO CASE CASE lnCodError = 1799 && Conversion Cancelled @@ -3174,7 +3175,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lcError = 'Error ' + TRANSFORM(toEx.ERRORNO) + ', ' + toEx.MESSAGE + CR_LF ; + toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) + CR_LF - IF NOT EMPTY(toEx.LINECONTENTS) + IF NOT EMPTY(toEx.LINECONTENTS) AND toEx.ErrorNo <> 1098 lcError = lcError + toEx.LINECONTENTS + CR_LF ENDIF @@ -3739,6 +3740,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -3761,6 +3763,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] @@ -3795,6 +3798,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION c_OriginalFileName = '' c_ClaseActual = '' oFSO = NULL + n_Methods_LineNo = 0 && Número de línea del error dentro de "Methods" @@ -4605,6 +4609,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION *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)) + .n_Methods_LineNo = taBloquesExclusion(tnBloquesExclusion,1) ERROR (TEXTMERGE(loLang.C_END_MARKER_NOT_FOUND_LOC)) ENDIF ENDIF @@ -4761,6 +4766,10 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION ENDFUNC + PROCEDURE set_UserValue + LPARAMETERS toEx as Exception + ENDPROC + PROCEDURE sortPropsAndValues_SetAndGetSCXPropNames *-------------------------------------------------------------------------------------------------------------- @@ -7496,6 +7505,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin _MEMBERDATA = [] ; + [] ; + [] + c_Type = 'VC2' PROCEDURE Convertir @@ -7851,6 +7861,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin _MEMBERDATA = [] ; + [] ; + [] + c_Type = 'SC2' PROCEDURE Convertir @@ -8211,6 +8222,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin + [] ; + [] ; + [] + c_Type = 'PJ2' @@ -9011,6 +9023,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin + [] ; + [] ; + [] + c_Type = 'FR2' PROCEDURE Convertir @@ -9452,6 +9465,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin + [] ; + [] ; + [] + c_Type = 'DB2' PROCEDURE Convertir @@ -9750,6 +9764,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin + [] ; + [] ; + [] + c_Type = 'DC2' PROCEDURE Convertir @@ -9930,9 +9945,9 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin + [] ; + [] - - n_MenuType = 0 - c_MenuLocation = '' + c_Type = 'MN2' + n_MenuType = 0 + c_MenuLocation = '' PROCEDURE Convertir @@ -10154,7 +10169,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE + [] - PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) @@ -10236,7 +10250,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' lnMethodCount = tnMethodCount .Method2Array( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ; - , @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg ) + , @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg, @toRegObj ) *-- Ubico los métodos protegidos y les cambio la definición. *-- Los métodos se deben generar con la ruta completa, porque si no es imposible saber a que objeto corresponden, @@ -10762,6 +10776,56 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE ENDPROC + PROCEDURE set_UserValue + LPARAMETERS toEx as Exception + + LOCAL lcMethods, I, lcLine, laCodeLines(1), lcMethod, lcLocation + STORE '' TO lcMethods, lcLine, laCodeLines, lcMethod, lcLocation + + toEx.UserValue = toEx.UserValue + CR_LF + + IF INLIST(THIS.c_Type, 'SCX', 'VCX') THEN + lcMethods = Methods + toEx.UserValue = toEx.UserValue + 'Error location ' + '..............................' + CR_LF + + IF NOT EMPTY(Parent) + lcLocation = lcLocation + Parent + '.' + ENDIF + + lcLocation = lcLocation + ObjName + + *-- Busco el Procedure si hay un n_Methods_LineNo + ALINES(laCodeLines, lcMethods) + + FOR I = THIS.n_Methods_LineNo TO 1 STEP -1 + lcLine = LTRIM( laCodeLines(I), 0, ' ', CHR(9) ) + + DO CASE + CASE LEFT(lcLine, 10) == 'PROCEDURE ' + lcMethod = ALLTRIM( SUBSTR( lcLine, 11) ) + EXIT + + CASE LEFT(lcLine, 9) == 'FUNCTION ' + lcMethod = ALLTRIM( SUBSTR( lcLine, 10) ) + EXIT + + ENDCASE + + ENDFOR + + IF EMPTY(lcMethod) THEN + lcLocation = 'Class: ' + lcLocation + ELSE + lcLocation = 'Method: ' + lcLocation + '.' + lcMethod + ENDIF + + toEx.UserValue = toEx.UserValue + lcLocation + CR_LF + ENDIF + + toEx.UserValue = toEx.UserValue + 'Recno: ' + TRANSFORM(RECNO()) + CR_LF + toEx.UserValue = toEx.UserValue + '.............................................' + CR_LF + ENDPROC + PROCEDURE SortMethod LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ; @@ -10834,7 +10898,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE PROCEDURE Method2Array LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ; - , taProtected, tnProtected_Count, toFoxBin2Prg + , taProtected, tnProtected_Count, toFoxBin2Prg, toRegObj *-- 29/10/2013 Fernando D. Bozzo *-- Se tiene en cuenta la posibilidad de que haya un PROC/ENDPROC dentro de un TEXT/ENDTEXT *-- cuando es usado en un generador de código o similar. @@ -11851,6 +11915,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'VCX' PROCEDURE Convertir @@ -12039,7 +12104,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg lnMethodCount = 0 .Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; - , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) + , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg, @loRegClass ) .get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) @@ -12127,6 +12192,8 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF @@ -12154,6 +12221,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'SCX' PROCEDURE Convertir @@ -12359,7 +12427,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg lnMethodCount = 0 .Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; - , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) + , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg, @loRegClass ) .get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) @@ -12449,6 +12517,8 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF @@ -12476,6 +12546,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'PJX' PROCEDURE Convertir @@ -12783,12 +12854,14 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + lnCodError = toEx.ERRORNO DO CASE CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) *toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME - toEx.USERVALUE = loLang.C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME + toEx.USERVALUE = toEx.USERVALUE + loLang.C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME ENDCASE IF THIS.l_Debug AND _VFP.STARTMODE = 0 @@ -12815,6 +12888,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_pjm_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'PJM' PROCEDURE Convertir @@ -13161,12 +13235,14 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + lnCodError = toEx.ERRORNO DO CASE CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) *toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME - toEx.USERVALUE = loLang.C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME + toEx.USERVALUE = toEx.USERVALUE + loLang.C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME ENDCASE IF THIS.l_Debug AND _VFP.STARTMODE = 0 @@ -13197,6 +13273,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg *_MEMBERDATA = [] ; + [] ; + [] + c_Type = 'FRX' @@ -13338,6 +13415,8 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF @@ -13365,6 +13444,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_dbf_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'DBF' PROCEDURE Convertir @@ -13480,6 +13560,8 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + DO CASE CASE toEx.ERRORNO = 13 && Alias not found *toEx.USERVALUE = 'WARNING!!' + CR_LF ; @@ -13488,7 +13570,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg + '¡¡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(loLang.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC) + toEx.USERVALUE = toEx.USERVALUE + TEXTMERGE(loLang.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC) *!* CASE toEx.ErrorNo = 1976 && Cannot resolve backlink *!* toEx.UserValue = 'WARNING!!' + CR_LF ; @@ -13534,6 +13616,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_dbc_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'DBC' PROCEDURE Convertir @@ -13581,6 +13664,8 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF @@ -13604,6 +13689,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL THIS AS c_conversor_mnx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF + c_Type = 'MNX' PROCEDURE Convertir @@ -13658,6 +13744,8 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg CATCH TO toEx + THIS.set_UserValue(@toEx) + IF THIS.l_Debug AND _VFP.STARTMODE = 0 SET STEP ON ENDIF From b14d8f74b1a5611c66743a5c7bd591a80879af1f Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 2 Mar 2015 01:01:27 +0100 Subject: [PATCH 05/37] =?UTF-8?q?Changeset:=20655=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20archivo=20de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index d3aba30..512e7ea 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -21,6 +21,7 @@ Change History ------------------------------------------------------------- - Added VFP 9 SP1 runtime validation - Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) - Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) +- Make some error descriptions more informative and precise (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From 657de7c56850d8883b8006ff3d8178bfef769987 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 2 Mar 2015 01:05:17 +0100 Subject: [PATCH 06/37] =?UTF-8?q?Changeset:=20656=20Correcci=C3=B3n=20hist?= =?UTF-8?q?orial=20y=20cr=C3=A9ditos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 65e6536..85e8f3a 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -133,6 +133,7 @@ * 13/01/2015 FDBOZZO v1.19.41 Bug Fix db2: Detección errónea de tabla inválida cuando el tamaño es inferior a 328 bytes. Límite mínimo cambiado a 65 bytes. * 20/01/2015 FDBOZZO v1.19.42 Mejora: Validación de versión de Visual FoxPro, para evitar problemas ajenos a FoxBin2Prg * 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) +* 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -194,6 +195,7 @@ * 06/01/2015 Mike Potjer Reporte bug db2: [Error 12, Variable "TCOUTPUTFILE" is not found] cuando DBF_Conversion_Support=4 y el archivo de salida es igual al generado (Agregado en v1.19.40) * 13/01/2015 Ryan Harris Reporte bug vcx/scx v1.19.40: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros LPARAMETERS en línea aparte (Arreglado en v1.19.41) * 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) +* 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- From 43cf365c78a4ea9550e39fbf2ae94db2e4469555 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 2 Mar 2015 01:18:44 +0100 Subject: [PATCH 07/37] =?UTF-8?q?Changeset:=20658=20-=20Indicaci=C3=B3n=20?= =?UTF-8?q?del=20n=C3=BAmero=20de=20l=C3=ADnea=20real=20y=20contenido=20de?= =?UTF-8?q?=20la=20misma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 85e8f3a..b0f4f62 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -10781,8 +10781,9 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE PROCEDURE set_UserValue LPARAMETERS toEx as Exception - LOCAL lcMethods, I, lcLine, laCodeLines(1), lcMethod, lcLocation + LOCAL lcMethods, I, lcLine, laCodeLines(1), lcMethod, lcLocation, lnErrorLine STORE '' TO lcMethods, lcLine, laCodeLines, lcMethod, lcLocation + STORE 0 TO lnErrorLine, I toEx.UserValue = toEx.UserValue + CR_LF @@ -10805,10 +10806,12 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE DO CASE CASE LEFT(lcLine, 10) == 'PROCEDURE ' lcMethod = ALLTRIM( SUBSTR( lcLine, 11) ) + lnErrorLine = THIS.n_Methods_LineNo - I EXIT CASE LEFT(lcLine, 9) == 'FUNCTION ' lcMethod = ALLTRIM( SUBSTR( lcLine, 10) ) + lnErrorLine = THIS.n_Methods_LineNo - I EXIT ENDCASE @@ -10821,7 +10824,12 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE lcLocation = 'Method: ' + lcLocation + '.' + lcMethod ENDIF + IF lnErrorLine > 0 THEN + lcLocation = lcLocation + ', Line ' + TRANSFORM(lnErrorLine) + ENDIF + toEx.UserValue = toEx.UserValue + lcLocation + CR_LF + toEx.UserValue = toEx.UserValue + '> ' + laCodeLines(THIS.n_Methods_LineNo) + CR_LF ENDIF toEx.UserValue = toEx.UserValue + 'Recno: ' + TRANSFORM(RECNO()) + CR_LF From 262f5bb591292a49a9f79a3431842a1645f8e728 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 2 Mar 2015 01:26:13 +0100 Subject: [PATCH 08/37] =?UTF-8?q?Changeset:=20660=20-=20Agregado=20cr?= =?UTF-8?q?=C3=A9dito=20para=20Tuvia=20Vinitsky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index b0f4f62..41640c0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -132,6 +132,7 @@ * 13/01/2015 FDBOZZO v1.19.41 Bug Fix scx/vcx: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros en LPARAMETERS (Ryan Harris) * 13/01/2015 FDBOZZO v1.19.41 Bug Fix db2: Detección errónea de tabla inválida cuando el tamaño es inferior a 328 bytes. Límite mínimo cambiado a 65 bytes. * 20/01/2015 FDBOZZO v1.19.42 Mejora: Validación de versión de Visual FoxPro, para evitar problemas ajenos a FoxBin2Prg +* 22/01/2015 FDBOZZO v1.19.42 Bug Fix: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Tuvia Vinitsky) * 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) * 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) * @@ -194,6 +195,7 @@ * 06/01/2015 Jim Nelson Mejora v1.19.39: Permitir configurar la barra de progreso para que solamente aparezca cuando se procesan múltiples archivos y no cuando se procesa solo 1 (Agregado en v1.19.40) * 06/01/2015 Mike Potjer Reporte bug db2: [Error 12, Variable "TCOUTPUTFILE" is not found] cuando DBF_Conversion_Support=4 y el archivo de salida es igual al generado (Agregado en v1.19.40) * 13/01/2015 Ryan Harris Reporte bug vcx/scx v1.19.40: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros LPARAMETERS en línea aparte (Arreglado en v1.19.41) +* 22/01/2015 Tuvia Vinitsky Bug Fix v1.19.41: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) * From f6e4d9712851b2109012f421330c2b42e015f123 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 3 Mar 2015 20:55:30 +0100 Subject: [PATCH 09/37] Changeset: 661 - Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) --- FoxBin2PRGVersionFile.txt | 3 ++- foxbin2prg.prg | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 512e7ea..9a25bee 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -21,7 +21,8 @@ Change History ------------------------------------------------------------- - Added VFP 9 SP1 runtime validation - Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) - Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) -- Make some error descriptions more informative and precise (Lutz Scheffler) +- Feature: Make some error descriptions more informative and precise (Lutz Scheffler) +- Feature: Allow specifying inputFile with relative path (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 41640c0..ca5b652 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -135,6 +135,7 @@ * 22/01/2015 FDBOZZO v1.19.42 Bug Fix: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Tuvia Vinitsky) * 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) * 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) +* 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -198,6 +199,7 @@ * 22/01/2015 Tuvia Vinitsky Bug Fix v1.19.41: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) +* 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir definir el archivo de entrada con un path relativo (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -1934,6 +1936,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC ENDIF + *-- Ajusto la ruta si no es absoluta + IF lcInputFile_Type == C_FILETYPE_FILE ; + AND LEFT(LTRIM(tc_InputFile),2) <> '\\' ; + AND SUBSTR(LTRIM(tc_InputFile),2,1) <> ':' THEN + tc_InputFile = FULLPATH(tc_InputFile, .c_CurDir) + ENDIF + *-- Determino el tipo de InputFile (Archivo o Directorio) IF EMPTY(lcInputFile_Type) AND NOT EMPTY(tc_InputFile) DO CASE @@ -10790,32 +10799,32 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE toEx.UserValue = toEx.UserValue + CR_LF IF INLIST(THIS.c_Type, 'SCX', 'VCX') THEN - lcMethods = Methods + lcMethods = METHODS toEx.UserValue = toEx.UserValue + 'Error location ' + '..............................' + CR_LF IF NOT EMPTY(Parent) lcLocation = lcLocation + Parent + '.' ENDIF - - lcLocation = lcLocation + ObjName - + + lcLocation = lcLocation + OBJNAME + *-- Busco el Procedure si hay un n_Methods_LineNo ALINES(laCodeLines, lcMethods) FOR I = THIS.n_Methods_LineNo TO 1 STEP -1 lcLine = LTRIM( laCodeLines(I), 0, ' ', CHR(9) ) - + DO CASE CASE LEFT(lcLine, 10) == 'PROCEDURE ' lcMethod = ALLTRIM( SUBSTR( lcLine, 11) ) lnErrorLine = THIS.n_Methods_LineNo - I EXIT - + CASE LEFT(lcLine, 9) == 'FUNCTION ' lcMethod = ALLTRIM( SUBSTR( lcLine, 10) ) lnErrorLine = THIS.n_Methods_LineNo - I EXIT - + ENDCASE ENDFOR From 0210d533f13dccbe3f1d24f52f8f7d59e51c0f38 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 3 Mar 2015 21:07:22 +0100 Subject: [PATCH 10/37] Changeset: 663 - Metadato del Dataenvironment no se genera bien cuando el Dataenvironment es renombrado --- FoxBin2PRGVersionFile.txt | 1 + foxbin2prg.prg | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 9a25bee..85a207c 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -23,6 +23,7 @@ Change History ------------------------------------------------------------- - Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) - Feature: Make some error descriptions more informative and precise (Lutz Scheffler) - Feature: Allow specifying inputFile with relative path (Lutz Scheffler) +- Bug Fix scx: Metadata of Dataenvironment not properly generated when Dataenvironment is renamed 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. diff --git a/foxbin2prg.prg b/foxbin2prg.prg index ca5b652..d41cd1d 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -136,6 +136,7 @@ * 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) * 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) +* 03/03/2015 FDBOZZO v1.19.42 Bug Fix scx: Metadato del Dataenvironment no se genera bien cuando el Dataenvironment es renombrado * * *--------------------------------------------------------------------------------------------------- @@ -6776,7 +6777,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS C_CONVERSOR_BASE toClase._PROTECTED = .hiddenAndProtected_PAM( toClase ) toClase._METHODS = .classMethods2Memo( toClase ) toClase._RESERVED1 = IIF( .c_Type = 'SCX', '', 'Class' ) - toClase._RESERVED2 = IIF( .c_Type = 'VCX' OR PROPER(toClase._Nombre) == 'Dataenvironment', TRANSFORM( toClase._AddObject_Count + 1 ), '' ) + toClase._RESERVED2 = IIF( .c_Type = 'VCX' OR PROPER(toClase._Class) == 'Dataenvironment', TRANSFORM( toClase._AddObject_Count + 1 ), '' ) toClase._RESERVED3 = .defined_PAM2Memo( toClase ) toClase._RESERVED4 = toClase._ClassIcon toClase._RESERVED5 = toClase._ProjectClassIcon From 37d19f8592c34fdfcdfa1414ed7740b38adcf934 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 3 Mar 2015 21:16:45 +0100 Subject: [PATCH 11/37] =?UTF-8?q?Changeset:=20665=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20archivo=20de=20versi=C3=B3n=20y=20EXE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 2 +- foxbin2prg.exe | Bin 508922 -> 514065 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 85a207c..c190130 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -18,7 +18,7 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- 2015/03/01 v1.19.42 -- Added VFP 9 SP1 runtime validation +- Feature: Added VFP 9 SP1 runtime validation - Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) - Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) - Feature: Make some error descriptions more informative and precise (Lutz Scheffler) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 0b4964299ffdb97a5d3a410059b707862fc59347..c936c2284edca4824e0b30cdd059586af43f5451 100644 GIT binary patch delta 37866 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 bu$k))9J0bZVKaGz!NB*2tni>Vg_isu(_~Y@ delta 33079 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 Date: Wed, 4 Mar 2015 22:19:50 +0100 Subject: [PATCH 12/37] =?UTF-8?q?Changeset:=20666=20-=20Arreglo=20del=20co?= =?UTF-8?q?mpletado=20del=20path=20relativo=20-=20Agregada=20la=20generaci?= =?UTF-8?q?=C3=B3n=20del=20PJX/PJ2=20cuando=20se=20indica=20"file.pjx",=20?= =?UTF-8?q?"*"=20(Lutz=20Scheffler)=20-=20Mejoras=20en=20la=20traducci?= =?UTF-8?q?=C3=B3n=20al=20alem=C3=A1n=20(Lutz=20Scheffler)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 514065 -> 514325 bytes foxbin2prg.prg | 52 +++++++++++++++++++++++++++++++----------------- foxbin2prg_de.h | 36 ++++++++++++++++----------------- 3 files changed, 52 insertions(+), 36 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index c936c2284edca4824e0b30cdd059586af43f5451..b986c008636f1e7fe11ec4e36bea6b62ad4ad40b 100644 GIT binary patch delta 16277 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∈D`kHu~ziO zS`Z6XVXfGXwP0sYjDI`~bA}_+AvZVZMU)AiI0@?jQn6b+#uqHiM1fg4`Vh<~YW{2; z?MCWd0Gb}slN^ll`!q$DigVE$<>7Kx{8AAIBjPk?TRJTbB*63tl{ ziUFOFC^C>J9)a_q4UV?79_)-ap%1jW+?J{vfawhr z=2Gn+nH&EIP#k!|+CMTk1_UaOp|xftPi~x!U#IY@it9SKad2>$;+a&}GdNgHGn*@p zg>@a==p4c-Pph5FoI_A=OC{(~-5_oZ!*_jt!%KA?+?d}+aXhH&;Kr&N2mZ4{?H`#N z(>o|7eCs;WJCxz5*IDu4U+&lbk-1URMR9bk>)^&8A{9rUx(;p}5~DbV)pc-VUaaC6 zRoB6dWpishU)1$*x} zx(>%d7=)4<&xpDnZXAv5&x?$&>)^&cHIA?AI=HcPs8V80T?aQFFe;86bsgMTw!ox# zj@0#VqfNHrxLVi2jeT+y$HTe~Zq$rW9Hgr46Oy^neWc=Wt?S^%!z0;~b7~(O*J3sO EKdD_(=l}o! delta 16157 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 P)g1T)S=rpfs-^!2a3d)% diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d41cd1d..2e1ac33 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -137,6 +137,7 @@ * 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Bug Fix scx: Metadato del Dataenvironment no se genera bien cuando el Dataenvironment es renombrado +* 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -201,6 +202,7 @@ * 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir definir el archivo de entrada con un path relativo (Agregado en v1.19.42) +* 28/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -1938,7 +1940,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF *-- Ajusto la ruta si no es absoluta - IF lcInputFile_Type == C_FILETYPE_FILE ; + IF LEN(tc_InputFile) > 1 ; AND LEFT(LTRIM(tc_InputFile),2) <> '\\' ; AND SUBSTR(LTRIM(tc_InputFile),2,1) <> ':' THEN tc_InputFile = FULLPATH(tc_InputFile, .c_CurDir) @@ -2275,6 +2277,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM USE IN (SELECT("TABLABIN")) + *-- Convierto primero el proyecto + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + *-- Luego convierto los archivos incluidos FOR I = 1 TO lnFileCount lcFile = laFiles(I,1) @@ -2324,6 +2333,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF ENDFOR + *-- Convierto primero el proyecto + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + *-- Luego convierto los archivos incluidos FOR I = 1 TO lnFileCount lcFile = laFiles(I) @@ -22572,11 +22588,11 @@ DEFINE CLASS CL_LANG AS Custom *------------------------------------------------------------------------------------------------------------------------------------------- *-- NOTE: ES MÜSSEN ANFÜHRUNGSZEICHEN BENUTZT WERDEN, ODER SYNTAX ERRORS PASSIEREN BEIM COMPILE. SELTSAM :( *------------------------------------------------------------------------------------------------------------------------------------------- - .C_ASTERISK_EXT_NOT_ALLOWED_LOC = "* und ? Erweiterungen sind nicht erlaubt, da es gefährlich ist (binaries könnten überschrieben werden mit xx2 leeren Dateien)" - .C_BACKLINK_CANT_UPDATE_BL_LOC = "Backlink kann nicht geupdated werden" + .C_ASTERISK_EXT_NOT_ALLOWED_LOC = "Die Erweiterungen * und ? sind nicht erlaubt, da sie gefährlich sind (Binaries könnten mit xx2 leeren Dateien überschrieben werden)" + .C_BACKLINK_CANT_UPDATE_BL_LOC = "Backlink kann nicht aktualisiert werden" .C_BACKLINK_OF_TABLE_LOC = "von Tabelle" - .C_BACKUP_OF_LOC = "Mache Backup von: " - .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren da sie Schreibgeschützt ist" + .C_BACKUP_OF_LOC = "Erzeuge Backup von: " + .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren, da sie schreibgeschützt ist" .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" .C_CONFIGFILE_LOC = "Benutze Konfigurationsdatei:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Konvertierung durch den Benutzer abgebrochen" @@ -22588,16 +22604,16 @@ DEFINE CLASS CL_LANG AS Custom .C_CONVERT_FOLDER_QUESTION_LOC = "Welche Umwandlung sollte sich auf die Dateien dieses Verzeichnis durchgeführt werden?" .C_CONVERTER_UNLOAD_LOC = "Konverter wird entladen" .C_CONVERTING_FILE_LOC = "Konvertiere Datei" - .C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Datenfehler: Keine Analyse möglich da ungepaarte Anführungszeichen in Zeile <>" + .C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC = "Datenfehler: Keine Analyse möglich, da ungepaarte Anführungszeichen in Zeile <> sind." .C_DUPLICATED_FILE_LOC = "Doppelte Datei" .C_DUPLICATED_OBJECT_LOC = "Doppelte Objekt" .C_ENDDEFINE_MARKER_NOT_FOUND_LOC = "Kann keinen Ende Marker [ENDDEFINE] in Zeile <> für die ID [<>] finden" .C_END_MARKER_NOT_FOUND_LOC = "Kann keinen Ende Marker [<>] welcher den Start Marker [<>] in Zeile <> schließt" - .C_END_OF_PROCESS_LOC = "Ende der Prozess" + .C_END_OF_PROCESS_LOC = "Ende desr Prozesses" .C_ERROR_LOC = "FEHLER" .C_ERRORS_FOUND_IN_FILE_LOC = "FEHLER IN FILE GEFUNDEN" - .C_EXTENSION_RECONFIGURATION_LOC = "Erweiterungsneukonfiguration:" - .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" + .C_EXTENSION_RECONFIGURATION_LOC = "Nneukonfiguration der Erweiterungen:" &&wir wollen es mal nicht übertreiben, mit den zusammengesetzten Substantiven + .C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC = "Die Anzahl externee Klassen (<< toModulo._ExternalClasses_Count >>) entspricht nicht der der gefunden Klassen (<< toModulo._Clases_Count >>), Datei: [<< toFoxBin2Prg.c_InputFile >>]" .C_EXTERNAL_CLASS_NAME_WAS_NOT_FOUND_LOC = "Keine externe Klasse gefunden" .C_EXTERNAL_PARAMETERS_LOC = "EXTERNE PARAMETER" .C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC = "Feld [<>] nicht in der Struktur von Datei <> gefunden" @@ -22612,7 +22628,7 @@ DEFINE CLASS CL_LANG AS Custom + " FOXBIN2PRG 'c:\development\classes\*.vcx' '0' '0' '0' '1' '1'" + CR_LF + CR_LF ; + "Ein Beispiel für die Generierung der TXT von allen VCX in 'c:\development\classes', ohne Anzeige des Fehlerfensters und ohne LOG datei: " + CR_LF ; + " FOXBIN2PRG 'c:\development\classes\*.vc2' '0' '0' '0' '1' '0'" - .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG ist nur für Visual FoxPro 9.0!" + .C_FOXBIN2PRG_JUST_VFP_9_LOC = "FOXBIN2PRG arbeitet nur für Visual FoxPro 9.0!" .C_FOXBIN2PRG_WARN_CAPTION_LOC = "FOXBIN2PRG: WARNUNG!" .C_GENERATED_FILE_SIZE_LOC = "Generierte Dateigröße" .C_GENERATING_BINARY_LOC = "Gene Binary" @@ -22624,31 +22640,31 @@ DEFINE CLASS CL_LANG AS Custom .C_IS_UNSUPPORTED_LOC = "wird nicht unterstützt" .C_LANGUAGE_LOC = "DE" .C_MAIN_EXECUTION_LOC = "HAUPTAUSFÜHRUNGS" - .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY MENU '<>'" + .C_MENU_NOT_IN_VFP9_FORMAT_LOC = "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst mit MODIFY MENU '<>' nach VFP 9 konvertieren." .C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] gefunden" .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] nicht gefunden" - .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objekt [<>] enthält nicht oReg Objekt (level <>)" + .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objekt [<>] enthält nicht das oReg Objekt (level <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt." .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "Die äußere Klasse nicht die innere Klassifizierung anzeigen lassen" - .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben da sie dieselbe ist wie die neu generierte." - .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht erneuert da sie neuer ist als die Ursprungsdatei." + .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben, da sie dieselbe ist wie die neu generierte." + .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht erneuert, da sie neuer ist als die Ursprungsdatei." .C_PRESS_ESC_TO_CANCEL = "Drücken Sie Esc für Abbrechen" - .C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC = "Procedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<>, Recno:<>]" + .C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC = "Prozcedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<>, Recno:<>]" .C_PROCESSING_LOC = "Bearbeite Datei" .C_PROCESS_PROGRESS_LOC = "Bearbeitungsfortschritt:" .C_PROPERTY_NAME_NOT_RECOGNIZED_LOC = "Eigenschaft [<>] nicht erkannt." .C_READING_CFG_VALUES_FROM_DISK_LOC = "LESEWERTE CFG-DATEI AUF DER FESTPLATTE" .C_REPORT_NOT_IN_VFP9_FORMAT_LOC = "Report [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY REPORT '<>'" .C_REQUESTING_CAPITALIZATION_OF_FILE_LOC = "- Forder Großschreibung für Datei [<>] an" - .C_SCANNING_FILE_AND_DIR_INFO_LOC = "Scannen Datei- und Verzeichnisinformationen für" - .C_SOURCEFILE_LOC = "Source Datei: " + .C_SCANNING_FILE_AND_DIR_INFO_LOC = "Scanne Datei- und Verzeichnisinformationen für" + .C_SOURCEFILE_LOC = "Quell Datei: " .C_SOURCESAFE_COMPATIBILITY_MODE_LOC = "Sourcesafe-Kompatibilitätsmodus" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC erwartet, aber es wurde ENDDEFINE in Klasse <> (<>), Zeile <> der Datei <> gefunden" .C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC wurde erwartet, aber es wurde ENDDEFINE in Klasse <> (<>.<>), Zeile <> der Datei <> gefunden" .C_UNKNOWN_CLASS_NAME_LOC = "Unbekannte Klasse [<>]" .C_USING_THIS_SETTINGS_LOC = "Mit dieser einstellung" .C_WARNING_LOC = "WARNUNG!" - .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "SICHERSTELLEN DAS KEIN TABELLENALIAS IN DEM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" + .C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "STELLEN SIE SICHER, DAS KEIN TABELLENALIAS IM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" .C_WITH_ERRORS_LOC = "mit Fehlern" OTHERWISE && English (Inglés) diff --git a/foxbin2prg_de.h b/foxbin2prg_de.h index aeb3074..a643af0 100644 --- a/foxbin2prg_de.h +++ b/foxbin2prg_de.h @@ -3,26 +3,26 @@ *-- NOTE: ES MÜSSEN ANFÜHRUNGSZEICHEN BENUTZT WERDEN, ODER SYNTAX ERRORS PASSIEREN BEIM COMPILE. SELTSAM :( *-- FoxBin2Prg v1.19.38 *------------------------------------------------------------------------------------------------------------------------------------------- -#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC "* und ? Erweiterungen sind nicht erlaubt, da es gefährlich ist (binaries könnten überschrieben werden mit xx2 leeren Dateien)" -#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC "Backlink kann nicht geupdated werden" +#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC "Die Erweiterungen * und ? sind nicht erlaubt, da sie gefährlich sind (Binaries könnten mit xx2 leeren Dateien überschrieben werden)" +#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC "Backlink kann nicht aktualisiert werden" #DEFINE C_BACKLINK_OF_TABLE_LOC "von Tabelle" -#DEFINE C_BACKUP_OF_LOC "Mache Backup von: " -#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC "Kann Datei [<>] nicht generieren da sie Schreibgeschützt ist" +#DEFINE C_BACKUP_OF_LOC "Erzeuge Backup von: " +#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC "Kann Datei [<>] nicht generieren, da sie schreibgeschützt ist" #DEFINE C_CONFIGFILE_LOC "Benutze Konfigurationsdatei:" #DEFINE C_CONVERSION_CANCELLED_BY_USER_LOC "Konvertierung durch den Benutzer abgebrochen" -#DEFINE C_CONVERTER_UNLOAD_LOC "Konverter wird entladen" +#DEFINE C_CONVERTER_UNLOAD_LOC "Konverter wird entladen" &&don't realy grok it even in english #DEFINE C_CONVERTING_FILE_LOC "Konvertiere Datei" -#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC "Datenfehler: Keine Analyse möglich da ungepaarte Anführungszeichen in Zeile <>" +#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC "Datenfehler: Keine Analyse möglich, da ungepaarte Anführungszeichen in Zeile <> sind." #DEFINE C_DUPLICATED_FILE_LOC "Doppelte Datei" #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_END_OF_PROCESS_LOC "Ende der Prozess" +#DEFINE C_END_OF_PROCESS_LOC "Ende desr Prozesses" #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_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_LOC "Externe Klassenzahl (<< toModulo._ExternalClasses_Count >>) nicht gefunden Klassen entsprechen (<< toModulo._Clases_Count >>) für Datei [<< toFoxBin2Prg.c_InputFile >>]" +#DEFINE C_EXTENSION_RECONFIGURATION_LOC " Nneukonfiguration der Erweiterungen:" &&wir wollen es mal nicht übertreiben, mit den zusammengesetzten Substantiven +#DEFINE C_EXTERNAL_CLASS_COUNT_DOES_NOT_MATCH_FOUND_CLASSES_LOC "Die Anzahl externee Klassen (<< toModulo._ExternalClasses_Count >>) entspricht nicht der der gefunden Klassen (<< toModulo._Clases_Count >>), Datei: [<< toFoxBin2Prg.c_InputFile >>]" #DEFINE C_EXTERNAL_CLASS_NAME_DOES_NOT_FOUND_LOC "Externe Klasse (<>) nicht in der Datei [<>] gefunden" #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC "FOXBIN2PRG: FEHLER!!" #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC "FOXBIN2PRG: SYNTAX INFO" @@ -31,26 +31,26 @@ + " FOXBIN2PRG 'c:\development\classes\*.vcx' '0' '0' '0' '1' '1'" + CR_LF + CR_LF ; + "Ein Beispiel für die Generierung der TXT von allen VCX in 'c:\development\classes', ohne Anzeige des Fehlerfensters und ohne LOG datei: " + CR_LF ; + " FOXBIN2PRG 'c:\development\classes\*.vc2' '0' '0' '0' '1' '0'" -#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC "FOXBIN2PRG ist nur für Visual FoxPro 9.0!" +#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC "FOXBIN2PRG arbeitet nur für Visual FoxPro 9.0!" #DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC "FOXBIN2PRG: WARNUNG!" #DEFINE C_LANGUAGE_LOC "DE" -#DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY MENU '<>'" +#DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC "Menu [<>] ist NICHT in VFP 9 Format! - Bitte zuerst mit MODIFY MENU '<>' nach VFP 9 konvertieren." #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC "* Programm für Großschreibungssetzung [<>] gefunden" #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC "* Programm für Großschreibungssetzung [<>] nicht gefunden" -#DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC "Objekt [<>] enthält nicht oReg Objekt (level <>)" +#DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC "Objekt [<>] enthält nicht das oReg Objekt (level <>)" #DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt." -#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben da sie dieselbe ist wie die neu generierte." -#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimierung: Ausgabedatei [<>] wurde nicht erneuert da sie neuer ist als die Ursprungsdatei." -#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Procedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<>, Recno:<>]" +#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben, da sie dieselbe ist wie die neu generierte." +#DEFINE C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC "Optimierung: Ausgabedatei [<>] wurde nicht erneuert, da sie neuer ist als die Ursprungsdatei." +#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC "Prozcedur nicht geschlossen. Letzte Zeile des Codes muss ENDPROC sein. [<>, Recno:<>]" #DEFINE C_PROCESSING_LOC "Bearbeite Datei" #DEFINE C_PROCESS_PROGRESS_LOC "Bearbeitungsfortschritt:" #DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC "Eigenschaft [<>] nicht erkannt." #DEFINE C_REPORT_NOT_IN_VFP9_FORMAT_LOC "Report [<>] ist NICHT in VFP 9 Format! - Bitte zuerst nach VFP 9 konvertieren mit MODIFY REPORT '<>'" #DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC "- Forder Großschreibung für Datei [<>] an" -#DEFINE C_SCANNING_FILE_AND_DIR_INFO_LOC "Scannen Datei- und Verzeichnisinformationen für" -#DEFINE C_SOURCEFILE_LOC "Source Datei: " +#DEFINE C_SCANNING_FILE_AND_DIR_INFO_LOC "Scanne Datei- und Verzeichnisinformationen für" +#DEFINE C_SOURCEFILE_LOC "Quell Datei: " #DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC "Fehler in Verschachtelungsstruktur. ENDPROC erwartet, aber es wurde ENDDEFINE in Klasse <> (<>), Zeile <> der Datei <> gefunden" #DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC "Fehler in Verschachtelungsstruktur. ENDPROC wurde erwartet, aber es wurde ENDDEFINE in Klasse <> (<>.<>), Zeile <> der Datei <> gefunden" #DEFINE C_UNKNOWN_CLASS_NAME_LOC "Unbekannte Klasse [<>]" -#DEFINE C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC "WARNUNG!!" + CR_LF+ "SICHERSTELLEN DAS KEIN TABELLENALIAS IN DEM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" +#DEFINE C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC "WARNUNG!!" + CR_LF+ "STELLEN SIE SICHER, DAS KEIN TABELLENALIAS IM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <>.campo tag keyname)" #DEFINE C_WITH_ERRORS_LOC "mit Fehlern" From 38ab11a31c5c1c47e252360ab8d794562b5b4d49 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 4 Mar 2015 22:23:32 +0100 Subject: [PATCH 13/37] =?UTF-8?q?Changeset:=20667=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20archivo=20de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index c190130..52c18a0 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -24,6 +24,8 @@ Change History ------------------------------------------------------------- - Feature: Make some error descriptions more informative and precise (Lutz Scheffler) - Feature: Allow specifying inputFile with relative path (Lutz Scheffler) - Bug Fix scx: Metadata of Dataenvironment not properly generated when Dataenvironment is renamed +- Bug Fix: Added PJX/PJ2 generation when specifying "file.pjx", "*" (Lutz Scheffler) +- Some enhancements in german translations (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From c7ab04ea35e9febffd2659fdd63121232f33ab24 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 00:29:19 +0100 Subject: [PATCH 14/37] Changeset: 668 - Agregado soporte multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Lutz Scheffler) --- foxbin2prg.prg | 379 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 248 insertions(+), 131 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 2e1ac33..1340bba 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -490,6 +490,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM #ENDIF _MEMBERDATA = [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -518,6 +519,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -560,6 +563,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -595,7 +599,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] - DIMENSION a_ProcessedFiles(1) + DIMENSION a_ProcessedFiles(1), a_ProcessedFiles_0(1) PROTECTED l_ConfigEvaluated, n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 @@ -649,6 +653,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM n_FileHandle = 0 n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext n_ProcessedFilesCount = 0 && Contador genérico de procesados + n_ProcessedFiles_0 = 0 && Contador usado para los archivos file.ext o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL @@ -1918,8 +1923,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH - *DIMENSION .a_ProcessedFiles(1) - *.n_ProcessedFiles = 0 + DIMENSION .a_ProcessedFiles_0(1) + .n_ProcessedFiles_0 = 0 lnPCount = 0 lcInputFile_Type = '' @@ -2042,7 +2047,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Evaluación de FileSpec de entrada DO CASE - CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) + CASE lcInputFile_Type == C_FILETYPE_FILE AND ( '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) ) IF .l_ShowErrors *MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vacíos).', 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) MESSAGEBOX( loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) @@ -2054,32 +2059,50 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTSTEM( tc_InputFile ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN - IF .n_ShowProgressbar <> 0 THEN - .cargar_frm_avance() - ENDIF - lcFileSpec = FULLPATH( tc_InputFile ) - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(lcFileSpec)) - ENDCASE + IF EVL(tcType,'0') <> '*' THEN + IF .n_ShowProgressbar <> 0 THEN + .cargar_frm_avance() + ENDIF - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(lcFileSpec)) + ENDCASE - IF .l_Debug - ERASE ( .c_LogFile ) + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF ENDIF lnFileCount = ADIR( laFiles, lcFileSpec, '', 1 ) FOR I = 1 TO lnFileCount lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) ) - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() + + DO CASE + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' + *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UNO O MÁS PROYECTOS PJX + *-- Filespec: "*.PJX", "*" + .Evaluate_Full_PJX(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName) + + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' + *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UNO O MÁS PROYECTOS PJ2 + *-- Filespec: "*.PJ2", "*" + .Evaluate_Full_PJ2(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName) + + OTHERWISE + *-- DEMÁS ARCHIVOS + *-- Filespec: "*.EXT" + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDCASE ENDFOR EXIT @@ -2243,114 +2266,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DO CASE CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' - *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO - IF .n_ShowProgressbar <> 0 THEN - .cargar_frm_avance() - .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Bin>Txt) -' ) - ENDIF - - .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_BINARY_TO_TEXT_LOC ) - lcFileSpec = FULLPATH( tc_InputFile ) - - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(lcFileSpec)) - ENDCASE - - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - - SELECT 0 - USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN - lnFileCount = 0 - - SCAN FOR NOT DELETED() - lnFileCount = lnFileCount + 1 - DIMENSION laFiles(lnFileCount,1) - laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) - ENDSCAN - - USE IN (SELECT("TABLABIN")) - - *-- Convierto primero el proyecto - lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - - *-- Luego convierto los archivos incluidos - FOR I = 1 TO lnFileCount - lcFile = laFiles(I,1) - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - ENDFOR - + *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO PJX + .Evaluate_Full_PJX(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName) EXIT CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' - *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO - IF .n_ShowProgressbar <> 0 THEN - .cargar_frm_avance() - .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Txt>Bin) -' ) - ENDIF - - .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_TEXT_TO_BINARY_LOC ) - lcFileSpec = FULLPATH( tc_InputFile ) - - DO CASE - CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - CASE tcRecompile == '1' - CD (JUSTPATH(lcFileSpec)) - ENDCASE - - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - - lnFileCount = ALINES( laFiles, STREXTRACT( FILETOSTR(tc_InputFile), C_BUILDPROJ_I, C_BUILDPROJ_F ), 1+4 ) - - FOR I = lnFileCount TO 1 STEP -1 - IF '.ADD(' $ laFiles(I) - laFiles(I) = ADDBS( JUSTPATH( lcFileSpec ) ) + STREXTRACT( laFiles(I), ".ADD('", "')" ) - laFiles(I) = FORCEEXT( laFiles(I), .Get_Ext2FromExt( UPPER(JUSTEXT(laFiles(I))) ) ) - ELSE - lnFileCount = lnFileCount - 1 - ADEL( laFiles, I ) - DIMENSION laFiles(lnFileCount) - ENDIF - ENDFOR - - *-- Convierto primero el proyecto - lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - - *-- Luego convierto los archivos incluidos - FOR I = 1 TO lnFileCount - lcFile = laFiles(I) - .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - - IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF - ENDFOR - + *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO PJ2 + .Evaluate_Full_PJ2(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName) EXIT CASE EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' @@ -2471,6 +2393,189 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + PROCEDURE Evaluate_Full_PJX + *-------------------------------------------------------------------------------------------------------------- + * SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO PJX + *-------------------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tc_InputFile (v! IN ) Nombre del archivo de entrada + * tcRecompile (v? IN ) Indica recompilar ('1') el binario una vez regenerado. [Cambio de funcionamiento por defecto] + * Este cambio es para ganar tiempo, velocidad y seguridad. Además la recompilación que hace FoxBin2Prg + * 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 + * toModulo (@? OUT) Referencia de objeto del módulo generado (para Unit Testing) + * toEx (@? OUT) Objeto con información del error + * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar + * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) + *-------------------------------------------------------------------------------------------------------------- + LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName + + LOCAL lcFileSpec, lnFileCount, laFiles(1,1), lcFile, lnCodError, I, lnFileCount ; + , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' + + TRY + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + loLang = _SCREEN.o_FoxBin2Prg_Lang + lcFileSpec = FULLPATH( tc_InputFile ) + + IF .n_ShowProgressbar <> 0 THEN + .cargar_frm_avance() + .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Bin>Txt) -' ) + ENDIF + + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_BINARY_TO_TEXT_LOC ) + + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(lcFileSpec)) + ENDCASE + + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + + SELECT 0 + USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN + lnFileCount = 0 + + SCAN FOR NOT DELETED() + lnFileCount = lnFileCount + 1 + DIMENSION laFiles(lnFileCount,1) + laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) + ENDSCAN + + USE IN (SELECT("TABLABIN")) + + *-- Convierto primero el proyecto + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + + *-- Luego convierto los archivos incluidos + FOR I = 1 TO lnFileCount + lcFile = laFiles(I,1) + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + IF .n_ProcessedFiles_0 > 0 THEN + *-- Buscar si fue procesado antes + IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN + *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) + .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) + LOOP + ENDIF + ENDIF + + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + ENDFOR + + .writeLog_Flush() + ENDWITH + ENDTRY + ENDPROC + + + PROCEDURE Evaluate_Full_PJ2 + *-------------------------------------------------------------------------------------------------------------- + * SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO PJ2 + *-------------------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tc_InputFile (v! IN ) Nombre del archivo de entrada + * tcRecompile (v? IN ) Indica recompilar ('1') el binario una vez regenerado. [Cambio de funcionamiento por defecto] + * Este cambio es para ganar tiempo, velocidad y seguridad. Además la recompilación que hace FoxBin2Prg + * 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 + * toModulo (@? OUT) Referencia de objeto del módulo generado (para Unit Testing) + * toEx (@? OUT) Objeto con información del error + * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar + * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) + *-------------------------------------------------------------------------------------------------------------- + LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName + + LOCAL lcFileSpec, lnFileCount, laFiles(1,1), lcFile, lnCodError, I, lnFileCount ; + , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' + + TRY + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + loLang = _SCREEN.o_FoxBin2Prg_Lang + lcFileSpec = FULLPATH( tc_InputFile ) + + IF .n_ShowProgressbar <> 0 THEN + .cargar_frm_avance() + .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Txt>Bin) -' ) + ENDIF + + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_TEXT_TO_BINARY_LOC ) + + DO CASE + CASE .l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + CASE tcRecompile == '1' + CD (JUSTPATH(lcFileSpec)) + ENDCASE + + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + + lnFileCount = ALINES( laFiles, STREXTRACT( FILETOSTR(tc_InputFile), C_BUILDPROJ_I, C_BUILDPROJ_F ), 1+4 ) + + FOR I = lnFileCount TO 1 STEP -1 + IF '.ADD(' $ laFiles(I) + laFiles(I) = ADDBS( JUSTPATH( lcFileSpec ) ) + STREXTRACT( laFiles(I), ".ADD('", "')" ) + laFiles(I) = FORCEEXT( laFiles(I), .Get_Ext2FromExt( UPPER(JUSTEXT(laFiles(I))) ) ) + ELSE + lnFileCount = lnFileCount - 1 + ADEL( laFiles, I ) + DIMENSION laFiles(lnFileCount) + ENDIF + ENDFOR + + *-- Convierto primero el proyecto + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + + *-- Luego convierto los archivos incluidos + FOR I = 1 TO lnFileCount + lcFile = laFiles(I) + .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) + + IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + IF .n_ProcessedFiles_0 > 0 THEN + *-- Buscar si fue procesado antes + IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN + *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) + .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) + LOOP + ENDIF + ENDIF + + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF + ENDFOR + + .writeLog_Flush() + ENDWITH + ENDTRY + ENDPROC + + HIDDEN PROCEDURE ejecutar_WriteErrorLog LPARAMETERS toEx, tcErrorInfo @@ -2567,7 +2672,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF ENDIF - IF NOT EMPTY(tcOriginalFileName) tcOriginalFileName = loFSO.GetAbsolutePathName( tcOriginalFileName ) ENDIF @@ -2578,6 +2682,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .c_OriginalFileName = FORCEEXT(.c_OriginalFileName,'pjx') ENDIF + *-- Conteo de archivos normales procesados + .n_ProcessedFiles_0 = .n_ProcessedFiles_0 + 1 + DIMENSION .a_ProcessedFiles_0(.n_ProcessedFiles_0) + .a_ProcessedFiles_0(.n_ProcessedFiles_0) = .c_InputFile + .writeLog( C_TAB + 'c_OriginalFileName: ' + .c_OriginalFileName ) .writeLog( ) .o_Conversor = NULL @@ -22331,6 +22440,7 @@ DEFINE CLASS CL_LANG AS Custom C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "" C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "" C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "" + C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC = "" C_OPTION_LOC = "" C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "" C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "" @@ -22479,6 +22589,8 @@ DEFINE CLASS CL_LANG AS Custom .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programme des noms de capitalisation [<>] introuvables" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Object [<>] ne contient pas l'objet oReg (niveau <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Opération non reconnu. Seulement SETNAME et GETNAME permis." + .C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC = "Optimisation: sauter fichier déjà traité [<<(lcFile)>>]" + .C_OPTION_LOC = "Option" .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "La classe externe ne correspond pas à la classe interne" .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimisation: fichier de sortie [<>] ne était pas écrasé parce que ce est la même que celle générée." .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimisation: fichier de sortie [<>] n'a pas été régénéré car il est plus récent que le fichier d'entrée." @@ -22562,9 +22674,11 @@ DEFINE CLASS CL_LANG AS Custom .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* No se ha encontrado el programa de capitalización de nombres [<>]" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objeto [<>] no contiene el objeto oReg (nivel <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Operación no reconocida. Solo re reconoce SETNAME y GETNAME." + .C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC = "Optimización: saltando el archivo ya procesado [<<(lcFile)>>]" + .C_OPTION_LOC = "Option" .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "La clase externa no coincide con la clase interna" - .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimización: El archivo de salida [<>] no se sobreescribe por ser igual al generado." - .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimización: El archivo de salida [<>] no se regenera por ser más nuevo que el de entrada." + .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimización: el archivo de salida [<>] no se sobreescribe por ser igual al generado." + .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimización: el archivo de salida [<>] no se regenera por ser más nuevo que el de entrada." .C_PRESS_ESC_TO_CANCEL = "Pulse Esc para Cancelar" .C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC = "Procedimiento sin cerrar. La última línea de código debe ser ENDPROC. [<>, Recno:<>]" .C_PROCESSING_LOC = "Procesando archivo" @@ -22645,6 +22759,8 @@ DEFINE CLASS CL_LANG AS Custom .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Programm für Großschreibungssetzung [<>] nicht gefunden" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Objekt [<>] enthält nicht das oReg Objekt (level <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Befehl nicht erkannt. Nur SETNAME und GETNAME erlaubt." + .C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC = "Optimierung: Überspringen von bereits bearbeiteten Datei [<<(lcFile)>>]" + .C_OPTION_LOC = "Option" .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "Die äußere Klasse nicht die innere Klassifizierung anzeigen lassen" .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht überschrieben, da sie dieselbe ist wie die neu generierte." .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimierung: Ausgabedatei [<>] wurde nicht erneuert, da sie neuer ist als die Ursprungsdatei." @@ -22676,7 +22792,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "of table" .C_BACKUP_OF_LOC = "Doing Backup of: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Cannot generate file [<>] because it is ReadOnly" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZATION: Base File [<>] already processed, skipping processing of file [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimization: Base File [<>] already processed, skipping processing of file [<>]" .C_CONFIGFILE_LOC = "Using configuration file:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Cancelled by the user" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convert all files in a Project" @@ -22728,10 +22844,11 @@ DEFINE CLASS CL_LANG AS Custom .C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC = "* Names capitalization program [<>] not found" .C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC = "Object [<>] does not contain oReg object (level <>)" .C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC = "Operation not recognized. Only SETNAME and GETNAME allowed." + .C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC = "Optimization: skipping already processed file [<<(lcFile)>>]" .C_OPTION_LOC = "Option" .C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC = "The outer class does not match the inner classes" - .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimization: Output file [<>] was not overwritten because it is the same as was generated." - .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimization: Output file [<>] was not regenerated because it is newer than the inputfile." + .C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC = "Optimization: output file [<>] was not overwritten because it is the same as was generated." + .C_OUTPUTFILE_NEWER_THAN_INPUTFILE_LOC = "Optimization: output file [<>] was not regenerated because it is newer than the inputfile." .C_PRESS_ESC_TO_CANCEL = "Press Esc to Cancel" .C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC = "Procedure not closed. Last line of code must be ENDPROC. [<>, Recno:<>]" .C_PROCESSING_LOC = "Processing file" From 288d31564c1ce8933b40fab739e915953947fdd4 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 00:48:02 +0100 Subject: [PATCH 15/37] Changeset: 669 - Uso de log centralizado para proceso de multi-proyecto --- foxbin2prg.exe | Bin 514325 -> 517461 bytes foxbin2prg.prg | 53 +++++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index b986c008636f1e7fe11ec4e36bea6b62ad4ad40b..2d42321012d37263346a4703855fbd7184bd022b 100644 GIT binary patch delta 26824 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 delta 24176 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 J-FvK_{vS=&tjPcX diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 1340bba..34c0378 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2060,6 +2060,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTSTEM( tc_InputFile ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN lcFileSpec = FULLPATH( tc_InputFile ) + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF IF EVL(tcType,'0') <> '*' THEN IF .n_ShowProgressbar <> 0 THEN @@ -2072,12 +2077,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE tcRecompile == '1' CD (JUSTPATH(lcFileSpec)) ENDCASE - - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF ENDIF lnFileCount = ADIR( laFiles, lcFileSpec, '', 1 ) @@ -2089,12 +2088,12 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UNO O MÁS PROYECTOS PJX *-- Filespec: "*.PJX", "*" - .Evaluate_Full_PJX(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName) + .Evaluate_Full_PJX(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName, .c_LogFile) CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UNO O MÁS PROYECTOS PJ2 *-- Filespec: "*.PJ2", "*" - .Evaluate_Full_PJ2(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName) + .Evaluate_Full_PJ2(lcFile, tcRecompile, @toModulo, @toEx, tcOriginalFileName, .c_LogFile) OTHERWISE *-- DEMÁS ARCHIVOS @@ -2408,8 +2407,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * toEx (@? OUT) Objeto con información del error * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) + * tcLogFile (v? IN ) Nombre del log a usar *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName + LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName, tcLogFile LOCAL lcFileSpec, lnFileCount, laFiles(1,1), lcFile, lnCodError, I, lnFileCount ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' @@ -2424,6 +2424,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Bin>Txt) -' ) ENDIF + IF EMPTY(tcLogFile) + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + ENDIF + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_BINARY_TO_TEXT_LOC ) DO CASE @@ -2433,12 +2441,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(lcFileSpec)) ENDCASE - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - SELECT 0 USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN lnFileCount = 0 @@ -2477,8 +2479,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog_Flush() ENDIF ENDFOR - - .writeLog_Flush() ENDWITH ENDTRY ENDPROC @@ -2499,8 +2499,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * toEx (@? OUT) Objeto con información del error * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) + * tcLogFile (v? IN ) Nombre del log a usar *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName + LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName, tcLogFile LOCAL lcFileSpec, lnFileCount, laFiles(1,1), lcFile, lnCodError, I, lnFileCount ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' @@ -2515,6 +2516,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .o_Frm_Avance.Caption = STRTRAN( .o_Frm_Avance.Caption, '> -', '(Txt>Bin) -' ) ENDIF + IF EMPTY(tcLogFile) + .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF .l_Debug + ERASE ( .c_LogFile ) + ENDIF + ENDIF + .writeLog( '> ' + loLang.C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC + ': ' + loLang.C_TEXT_TO_BINARY_LOC ) DO CASE @@ -2524,12 +2533,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(lcFileSpec)) ENDCASE - .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF .l_Debug - ERASE ( .c_LogFile ) - ENDIF - lnFileCount = ALINES( laFiles, STREXTRACT( FILETOSTR(tc_InputFile), C_BUILDPROJ_I, C_BUILDPROJ_F ), 1+4 ) FOR I = lnFileCount TO 1 STEP -1 @@ -2569,8 +2572,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog_Flush() ENDIF ENDFOR - - .writeLog_Flush() ENDWITH ENDTRY ENDPROC From a95c3bb5e6317929370b90d2b1f7550fbb34cb87 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 19:33:23 +0100 Subject: [PATCH 16/37] =?UTF-8?q?Changeset:=20670=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20archivo=20de=20versi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 52c18a0..1fa66f8 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -26,6 +26,7 @@ Change History ------------------------------------------------------------- - Bug Fix scx: Metadata of Dataenvironment not properly generated when Dataenvironment is renamed - Bug Fix: Added PJX/PJ2 generation when specifying "file.pjx", "*" (Lutz Scheffler) - Some enhancements in german translations (Lutz Scheffler) +- Feature: Added multiprocessing of projects (*.pjx, *.pj2) when specifying "file.pjx", "*" (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From cff6226be2a2bcabb9e4a5859380d4fa834384d7 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 20:44:23 +0100 Subject: [PATCH 17/37] Changeset: 671 - Cambio de la clase principal de FoxBin2Prg de custom a session (Lutz Scheffler) - Se cambia el uso de la propiedad o_Conversor por la variable loConversor --- ...rg__c_foxbin2prg__EvaluarConfiguracion.prg | 14 +++-- foxbin2prg.exe | Bin 517461 -> 517413 bytes foxbin2prg.prg | 54 +++++++++--------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg index d20a73a..9fb53ab 100644 --- a/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg +++ b/TESTS/ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion.prg @@ -150,10 +150,11 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O #ENDIF TRY - loEx = NULL + loEx = NULL loFB2P_Esperado = CREATEOBJECT("EMPTY") - loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + THIS.ioFB2P = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG", "", FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) ) + loFB2P = THIS.ioFB2P + *loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) *-- DATOS DE ENTRADA @@ -651,9 +652,10 @@ DEFINE CLASS ut__foxbin2prg__c_foxbin2prg__EvaluarConfiguracion AS FxuTestCase O #ENDIF TRY - loEx = NULL - loFB2P = THIS.ioFB2P - loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) + loEx = NULL + THIS.ioFB2P = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG", "", FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) ) + loFB2P = THIS.ioFB2P + *loFB2P.c_Foxbin2prg_ConfigFile = FORCEPATH( 'foxbin2prg.cfg', oFXU_LIB.cPathDatosTest ) loFB2P.l_ShowErrors = .F. diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 2d42321012d37263346a4703855fbd7184bd022b..454db809bf29af4a02861748e83dc11b96fc3b19 100644 GIT binary patch delta 17880 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 bV-<&!rGpzUn;rP(;`!eP;bz?c?;rjj75D3U delta 17772 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 CV9YN7 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 34c0378..128e16e 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -484,7 +484,7 @@ QUIT ******************************************************************************************************************* -DEFINE CLASS c_foxbin2prg AS CUSTOM +DEFINE CLASS c_foxbin2prg AS SESSION #IF .F. LOCAL THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF @@ -683,6 +683,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM PROCEDURE INIT + LPARAMETERS tcCFG_File + LOCAL lcSys16, lnPosProg, lc_Foxbin2prg_EXE, laValues(1,5) SET DELETED ON SET DATE YMD @@ -707,7 +709,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF THIS.c_Foxbin2prg_FullPath = SUBSTR( lcSys16, lnPosProg ) - THIS.c_Foxbin2prg_ConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) + THIS.c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) ) THIS.c_CurDir = SYS(5) + CURDIR() lc_Foxbin2prg_EXE = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'EXE' ) THIS.c_FB2PRG_EXE_Version = 'v' + IIF( AGETFILEVERSION( laValues, lc_Foxbin2prg_EXE ) = 0, TRANSFORM(THIS.n_FB2PRG_Version), laValues(4) ) @@ -2690,7 +2692,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .writeLog( C_TAB + 'c_OriginalFileName: ' + .c_OriginalFileName ) .writeLog( ) - .o_Conversor = NULL IF NOT FILE(.c_InputFile) ERROR loLang.C_FILE_DOESNT_EXIST_LOC + ' [' + .c_InputFile + ']' @@ -2704,7 +2705,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_VC2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_VC2 ), lcForceAttribs ) CASE lcExtension = 'SCX' @@ -2712,7 +2713,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_SC2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_SC2 ), lcForceAttribs ) CASE lcExtension = 'PJX' @@ -2720,7 +2721,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), lcForceAttribs ) CASE lcExtension = 'PJM' @@ -2728,7 +2729,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_pjm_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_pjm_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), lcForceAttribs ) CASE lcExtension = 'FRX' @@ -2736,7 +2737,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_FR2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_FR2 ), lcForceAttribs ) CASE lcExtension = 'LBX' @@ -2744,7 +2745,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_LB2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_LB2 ), lcForceAttribs ) CASE lcExtension = 'DBF' @@ -2752,7 +2753,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_DB2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DB2 ), lcForceAttribs ) CASE lcExtension = 'DBC' @@ -2760,7 +2761,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_DC2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DC2 ), lcForceAttribs ) CASE lcExtension = 'MNX' @@ -2768,7 +2769,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_MN2 ) - .o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) + loConversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_MN2 ), lcForceAttribs ) CASE lcExtension = .c_VC2 @@ -2776,7 +2777,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'VCX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCT' ), lcForceAttribs ) @@ -2785,7 +2786,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'SCX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCT' ), lcForceAttribs ) @@ -2794,7 +2795,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'PJX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJT' ), lcForceAttribs ) @@ -2803,7 +2804,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'FRX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRT' ), lcForceAttribs ) @@ -2812,7 +2813,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'LBX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBT' ), lcForceAttribs ) @@ -2821,7 +2822,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'DBF' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBF' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FPT' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'CDX' ), lcForceAttribs ) @@ -2831,7 +2832,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'DBC' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBC' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCT' ), lcForceAttribs ) @@ -2841,7 +2842,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR (TEXTMERGE(loLang.C_FILE_NAME_IS_NOT_SUPPORTED_LOC)) ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'MNX' ) - .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) + loConversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNX' ), lcForceAttribs ) .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNT' ), lcForceAttribs ) @@ -2893,7 +2894,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF NOT .l_OptimizeByFilestamp OR .t_InputFile_TimeStamp >= .t_OutputFile_TimeStamp THEN .c_Type = UPPER(JUSTEXT(.c_OutputFile)) - loConversor = .o_Conversor loConversor.c_InputFile = .c_InputFile loConversor.c_OutputFile = .c_OutputFile loConversor.c_LogFile = .c_LogFile @@ -2908,14 +2908,14 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + .c_InputFile + '...', 0, 0, 0 ) - IF AEVENTS( laEvents, .o_Conversor ) = 0 THEN - BINDEVENT( .o_Conversor, 'AvanceDelProceso', THIS, 'AvanceDelProceso' ) + IF AEVENTS( laEvents, loConversor ) = 0 THEN + BINDEVENT( loConversor, 'AvanceDelProceso', THIS, 'AvanceDelProceso' ) ENDIF loConversor.Convertir( @toModulo, .F., THIS ) .n_ProcessedFilesCount = .n_ProcessedFilesCount + 1 .writeLog() - .writeLog(.o_Conversor.c_TextLog) && Recojo el LOG que haya generado el conversor + .writeLog(loConversor.c_TextLog) && Recojo el LOG que haya generado el conversor *-- Logueo los errores IF NOT EMPTY(loConversor.c_TextErr) THEN @@ -2948,11 +2948,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF FINALLY - IF AEVENTS( laEvents, THIS.o_Conversor ) > 0 THEN - UNBINDEVENTS( THIS.o_Conversor ) + IF AEVENTS( laEvents, loConversor ) > 0 THEN + UNBINDEVENTS( loConversor ) ENDIF - STORE NULL TO loConversor, THIS.o_Conversor, loFSO + STORE NULL TO loConversor, loFSO *IF lnCodError = 0 OR NOT THIS.l_ShowErrors THEN * THIS.writeLog( REPLICATE('-',100) ) From 80910569b256b34fe7c6e5af4e17c90d5c1f83e8 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 20:47:24 +0100 Subject: [PATCH 18/37] =?UTF-8?q?Changeset:=20672=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20archivo=20de=20versi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 1fa66f8..2db2a73 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -27,6 +27,7 @@ Change History ------------------------------------------------------------- - Bug Fix: Added PJX/PJ2 generation when specifying "file.pjx", "*" (Lutz Scheffler) - Some enhancements in german translations (Lutz Scheffler) - Feature: Added multiprocessing of projects (*.pjx, *.pj2) when specifying "file.pjx", "*" (Lutz Scheffler) +- Change FoxBin2Prg base class from custom to session (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From ec12d0c7d7b1bb6b17af71e153e16b80413b330f Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 21:03:16 +0100 Subject: [PATCH 19/37] Changeset: 674 - Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) --- foxbin2prg.exe | Bin 517413 -> 517509 bytes foxbin2prg.prg | 41 ++++++++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 454db809bf29af4a02861748e83dc11b96fc3b19..513f3367b14bf26624f166c714876bfddbe723e6 100644 GIT binary patch delta 15512 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 delta 15846 zcmc(m2Xs_b`|jU!X3m+CKzi>T0))^7q=Xa*q(Kro#6SiJrjdj$3@SxbP#kfKihzVF zgc5pD2u+X@I*5D}0TqxM5+WqrXU|FEkk9|RcddKZy3uW(-}COX&px}K$vEq0pB2Y^ zHZ~uk9onW$n6dW7!;-c`&g*68sT#U6(PT5qRa|=7)O3`u^Rf04Y3It+?{ArwwIQ-K z$@FM>N!qC7!K!r6B-W~>5X9znlp2|S-{&u=OZ5AF1c6FIOMlmhFI`Ly$Clw&$+lx} z2|`no%ki&-w@Wr34;6%wrmH7H#k9tz?ia$<-#4lWFfBdlDc!7yplVpIru7$G)znzA z8{MqvLDe-{YF#Daikh+>CYw`{LT^*@sdnOv#-Ge|KGRP8#SZlgHO;xOCqdZESW0f?*NhzCnqi66&&vHc5 zrl3u1(Y$@papq1j$IYGcv1Pp9Ywag8g5M_vi8Emhl0v#d{0YRo$dG%M1gN!8|n45_QjACBAx9U85#XL_Dgb=PtDk zHr1(0`q|X&LMx%nH10x*5M(-hA;IQnXM}@ZR;u_=e9zf5=Ax&m+r`Gh5mUm&WXEzB zG++>#vMUCez{lSUXVcb;gXBb)DrvC`A1vZ@7t_=e?!sbI%B8j_dhVs(;sZC+`AY#} zUsqGvFMcME%aa5@)907BJFal6aX@i5A}iDRpylN)Go}6FC7d@+`=xpCT{l#FFOoN^ zzNbp+>sjN3?2(nebocTLff8+SL5S(pFQcW2?p4xRQ|BuI!dX+=6(^Ui;8PwAN1D6o zqbnnXk4z7)j1f+i4ER;js;X2TeBE#ht4W~ZN|`j38q!o~=_Q`8T4VmNN>izWuSc>{ z;+59y)2~Fo##-7{B|TBqw4#+SD;t@F(k85%zbM6}R9a)e-RM}^82w>`@h1Z#D~WdV z0m$3WhCeT_zE-HQqD3zwZ&uhMZ!=1{S#C$>@fxWp)0$JBrkvZ>ZexU+aD*!zcv+Ds z^6vS&C%7=}x#yeg$ongU7v_uN9r&8U+l{9{Uj7S_y84z|Q>8P>(4Bl`4lX3$tZ>4O zl{vInz>*-;1eq5jS5wRT9>Q@`pZgwqn2oSj@tgI$<2%BQfGKDxTQm@^ZcNi1UPgxK zQH4n&Rv{&XI2uu|Mjt!z76sR}C|WF~fo1tnmF}jacS1Yzd+2ZvG+cF!FYkFgu8!`W z9d)z9gC5CPWONj+!(IOr5l=xEp%kjrnSS{z!019V(O9=kypW72Yi^rZoUXPQ%YBEb&4c&<;aHw}ugU+mS+Y~-(_+V{f9y>=~npe;&>6KXHfsTA3QCLJ&R1@<6!sx*&EFBVS+SHC{E2>sm zj^)~HCY!%pjeHW+#re3x)fm!s1)0aS8{IAAYdBWw7Y(P9wz|fakCJ5Rr}| zb8{vb@(VNb2eSC(l7};`Rw7n3+EAEam{ge7BcjhdHhsAiC>~nJik3@FgcHe;|u%8BqgQir)L+e+NQ+xh~=bb8)7oE48QGAJf~VOB|DGXty3no z=D!WQl(3cx425ZNnK_2RyA`JqP0Y_MG(_j;=jO-dj$W7FBtRf-n!DFCyg}Z6=vqU)*~~gb&@WBv~q=>OGS?i-d39%{VW>S%cqN0;i`Xvtf;Rq{RA%$ob{=_d=v3D0s4*Iu_n}NKEc}cRj zu$XmPDfv0JJf+wc!$QY$S4v@mC;N7#)Ku_dKOvuBVs}?czJkE4R!M^?6rmD#P9`~?rzcD2-0-0=rX1L`LIsa)#CT5gb>*pk(f&hrP^ z(g(ABtECWe!(;a6YROZ)_=IWJNWRI|r6w?=`iyMJEI@r?pbJFoDIaMY}|^O#Jdo^5&PTQMZx# zhV()MZaWr(=?fplb|>cRC%e0a`YViKW6lubX?XqlzV z^?S)Trn;#TvaSvFGvwjvib7w%Al{HOet)>)S&<<-uW)id!^qtHjNjXsO(v8`PVP2s zl^mE3{Ql-9Y8`LL&JAJfzn9$JSkzvLWBl`YyrFPRZbpGQNBA2`$ewaX@CUSv4PiB? zsrY+W=DSYv63=yG-PTD#9?c?@OKd5_FbV@BBP}T+-dvaiGp>`|gebOXo#f-{6shF1 zrsxUiS2QBeSQ^F3)=5qsTE^7XDKiH>Uziq=m6d3&LV;6nCG^i)Wt*TlZp5y6%WlGO z)_y(uY6%;(UJ4LCV$;@R0Ua@tT`!hg9HJAVqM~DB6QWP#DOWiWYw0OFi7oQkx5&We zdCD5`Og;-OmOPnnF%IROSkq!DNPIAXCGp=Qrtse`Y<{uSSeVWh7fU{3l#!S2u8E9} zO6?czz^)Zzs^&0ZgA^pVv5*a@M-SGA(-bytgXHi2$LGr3Ek;^CL;W~pJGV6ExaRII1zK#7ys!a9Z$y2%ve6q+*Ja1q_ZuZIxfgbh7bm&) z6R)0TCpSs~`d;VFmysv2PeWx-arY(Wwh0SM8`f!))YRQ{O$l4n`tO_E(kgc?x}$*k zu6bB3%amfRivJj|wLK7STkA_WVDtZ#|r zBYe!pl}PU5bAL9k1l?s~n@Xf+LO#1%B83WXGVK=0*L6=TUWhgRiOtC{vW~I?=84@ljFs7}Q(~y->@ap}#A`?eW zLhgdh4DBZya>T;VxBF0ulM||to}+ANJ+g9fidk6e|Fb}S zqc|*WhvXf6w>I2h>)9wPr72}QvX(orSQ$0kbjHS2cP^XF2JMgnjpu3uG8N{g;H3DK zR>`QL^o)$O#JK2XX2S)w=Z1OX>8|5>T+lv-Ntp$O2ELva<|6NZ>H|D)QhMPSgc5La z+^6SPxS`$6f&AQ&hK%v~hVQJL6yLhe&%+WuIh5J$lpF>`HdcaKbC91U|1dl54T~|^ z@QfaqOtqz(OUblTT%{cn?Kyd&m09;f*-2Q)7VN|%yb4KObFkzPz5cA4I$)Kb0c^TMiqIyI=_u-Z|20~hzvbDrUrA0(W zMkgnKUc$xlbz?9GmXYl>6v2IFLe7gp7AT2p5uIUgZX3^%lVTx5ZY_rqN%wFx0JerOktppp+r;B5_ z??-hP&0weZNG^8jTyFc<+XGqE9?7r6y~&E*u#~9j+z+VFKIvVBmFFAC`tFrn0-Md^ zW?+4${vRrA@d!=W$9vJl(X1F3blPv?8G`CB&@qJ@-hJ0s+z+nLSG}0M+KT~va5?k) zL2~XmcqNaA)W=t@QMh3_sq4Alq(0x5Ebj-&&-i?^VmHiwtc3f`>az>m6;>X)>n={s z|Ep7NcPoBfgAd%Nuth5b9#PLu9{gH41u?mV8bU`@CWx>)?cJzKmI7W*#G%}+u`;0ACK7|KS}}OnsU}?pX6&i zU9QBH2Y0IA)at(;d_%2Y_uyCl{`Y)UDmAWeU4OUn8igBHcB78_ZAdoOF4NyxD@MbN z&i34ITVLQ%Cxsj4>xREQ3DmAWUn>uV8|JI=;(q)3e8w)`iqSA*Cx7mDsLwdLo}+U{ zVx_SQR^m>4t-!|%1%?cMY~(8|U)fC|Jp2aM(E4y)=vr+^&sTSCTCyP@+v;a*^M3Pb z>gs;U)8kB2B}RhYwCl;Xfz-pY*n7j1d|j#zQo>Fu(!FpJG8 zmAss4I&!-+>1)^a_~?Yx0=BbMY9q{Nf0aruqJ0$0K7bRu*8xc<^kN|gFf!K1v$z9T zpWRv30m;w))4{xuH|rbXz)-g2faK|PakS!F7XBS8JAjkYa`pg)#!SiPIl9ze*>i%z zmRHPqNAVgq|9rFGm0XD>mdZ|zk|LtMeUE3Yvs^Rn=P6t_CQF&Zc6{cgMVa5RdZg#` zL%`X^{~bz7&)}gG%axF2rNX~gJY`OFU=I#TF1<3%W;dLB>OMM%G8Bx=&oqB#b8RcX zq8m;SxHsR3lF~<;ciF(*N}#TiYY(ybLz261+40x?ab=vl*B+p@o|!Y}khFcyA-Pqk zTlsJaAByQ|RDO0^`UL)=jhbQ-`^9Io(+_1&yhJ^CDEkV%nav|POpGjHwvS|2HsF!$ zE~f8S;3E!=N)`B#!_HcG%3<1JB@*%&koc1VLpZEDs=y}zdB|~I54PZm?7|K|mhFX! z?DAu|4L)#*cp^J6-zTU=DA#R-Wd6&EefR{Q;=H4T_weuvML**Dq*mfa0)v5Ol~Uv7Rt(>$^No^Gjl=dA!-NKvI5y6 zSY(A9g1Py2g&Zg(vQH~yA7L!pSRpqNGT7w`6k%l5oKjeDB`BBmuEY}=+1r(}pD>rr z<5a}(S37^fnVsg;iap^J%AB4fOEl~797T_1L-8x%RsyepHGfDP#d@d3#KuLx)_z<2 zvE|QkA0Kw)Ii9JwKl}5!94t&@wpFO-81_b$>?w~MZhnk+oh3(>QzdJ|-W$aYbK6D6 z^sMX1+d16DpTXnO;vy2bJ-(nYH#>ZLQI-6)ER-$muK7*lr)nemtJ-W26*LR@YsMxP zuF|w%_e71o<}3-KAZ}t>m4+WW&7sITcl&geW__~W*LN9hl$OyxX?wc?nr+rbw*vwV z))38A6ZM3?bVi_II--4G`7E}j-vrtTt^#L6x5T@QD(bQ#8fV4Q#+5hv2`;NQRtp*tmr^a%U_{1$Y(M3KZsM9;w)V?_$c z5h<-Pkr!Gq9{K{(0&oDh651Ir$6te+f+L_$A{BvKg8w!GoX3e&45KxS%M(QU8|fjq z9k|IvkqVHWf!_cxgT9aS65JW=G6@w%QrQr71CN<6Qila1WrBx*he5aaOr(#&BfxJ% zdwnYs1Dn9c-hjzSPhl*Cu?@Opg-BK467ZkUEmw)u#um*DPK7RCD^d*j2)O?1D}! z#YNx<@E6dn4v6G!M-&UrfSzzrq)>1ocp3D~!y>f@r-1cGP}V7t;=nV&c4Z=UyeiV? z;6>nZ&>7c7Itwn+8i~FFh<}Ro2aKJ_5COgPu1N0oLBPDB&IG)hHBGgZ_D{3%#9Rz)+iRWus>HFy_v zT%L-I;3Du8XvaboEd&>XA{~v@57tdVDNG9J?N^rD#`<20Q=*GtJ{1P9S2_rXF{(+ssP^tUxI#sR0F;P z_WT47_l1hoE_gVsHAA5nFH%vY3;N#%#tA^z*IsQTy(iHM7+2b>XW3JH8>UQRiLK7XR7HpFkhZq%tE}#sHOyOj7S(R zE7f#;yPA6Xka>A^*rBE^7u2*F+zhK>&J{IH`Atome2IF4zlZjDq^1Ypso;Uo9bc*G zZ9nX6;5=y3OLPQ$3EU1kzOh7Z{^(BdEa(YF2Z`cfxL~y_h92)G(HwAR@CN8DJ`x=Q zr-L6tzYLN{9e^eTw+WWWx4A@-;Pv1%Xqz??y$3!6zSmBoWnCmX4Sotf1O0U`iEIPW zg;?y)K^vDPNt6d87RD9mr~M@=24{hr4v^@@5Q*-CKLEEHDv{S1iM)f*V&GF_C7M4@ zqL08=z&}Dq%#x@S+y$%K6zHGlNi;GTJ16+@0*Mwbl4u*)2tK?>GE(AViJrhP!T10= zeI=SG1RD|f=xT}H+9**r_#&7=cikz`T5uIO8=CDw1;Ki(e%){?SD%uoR}-Q};I7a& z&Py}^90+#4Akm}$Nb~`?57_sbQKIF)OLPLpWEfYW`~NACV^gAc!3^5^u|!S4%fWHb zXVfx{1m6W~C7F6z$#f5_!g5*w{k4NkuAxM2!AGFeoshu2z^kE0;&?m*oDQC61T^xM zX%&pQFxo=D9U{|B@CI-Z^uh$0LYff`!1BpYq(uW{a%)cXA@~Y(`B0e*;3eRu!(^H} zMy8L!N5DIw1INj97JLVs3jL@+Cg&DJPr$~|LYayu$kYsmh~@Gw^y-N+^#EIeZ$f8J zktqr63|<616=$_kU~lkx=%jb?MhETzejj@4Oqo`I2Y~NEm(P;vFgOj|Vzx}tb7VRX z9?jSP@qn6dWV!{T6d5`!mZ|YdG+7uH4R9CeN#Dz~8GH@A5_Gq3DF|GG<$CXJbeEHc280t8x?=rr=c1vf-8J-0E6i&w zmp?^lsCR*ep0vhJhSgCRuc7&KG*s9YQxtsZ0}Z{iTtnXNa6-mvcDP7G;p;SX3>*TU zvR*^Z+cf0R9$PWkYqy3rBNc%AgReqgK{A2|7-7&J-0%kty$@qB_&wwu4uZLdxvxaVh-v=Ln9&tiL zm0;s67>Cbj=*C$M1#}?#7_2*|p+Fqw+JH^qe$bmP;LQZQ6rBB+hE_e$&@J#9@M-8` ze1Z1~cq{lKbof&Z>E0mv0XzVDZaG>7d>C9)siE6A97eo>{yz!h9h?lGtF-hkGF$}* zsI}BZ($Zou-!N3pTIz}9(-8+!@KordNWtLy;40|nE?Q~<#ut#NrK^^vyJ@L2Sit_U z4tj`>mU@G|!5>0925V_tNA!OLjCep&sFs!>!)WlN=30tssio`SJa9hr0;F=u7{R>?yIHAU==o;8t5+!T6zlp415&&mq}Xs*w`7X z5H=w9$y!=9O-q4qVqFKHfNu7YmSVs&zbP&88?D@Ht+9Fkf zSAd5?k4CBiuL6Gp{S}g`3%U$^3i=l$qZY>ZFzgrNX^br_T#)g6#Ndj0=nH1EiDDl250_+Z@!h`>$Biu@EGX(=kZNUa2eQeRZCB9 z;iNx zLpmL;)9Yvv*a*G|J;X^zMc@tK>Cl1RI;&P#X=mq#8bX1m(hJx+qwC-?VERBucaTO$;e-sfn~MsXbd(SNj$aS0U9O{p z;A`M8=tV1a*9vYtFOdO8h`0{4XO zV5_Gq;9T%v=-d8!^6!Ni0=5d&)920f_)r2TUhsD4P2qaF53T`A#*TWj>aM5MSR$Vw zG#T{3o_d-G?g5_OOHV%}>ggCb6MO^uXsVv{y|D;^Zw}PcA8C3@0~dp>-qO>73_UUM zVQ?5;0QZf-_28etzd;`zr>BeHO0e-^zMkG4ucz=nm;o?~pq;1bsS7wT7~3&)Yonf~ zfm?$=o~@@}kamFEf%S9rbO-52a96O+2YQN`tEc1OXz*<4q!0Dx2319}b89dJT0 z*8huu*(NjzjETsw6}s0VJq5>MX$4P%j$5p!{@`8U_TTC0=?Xn92cH8sS&64xji&-X z1mD6N=$74j@`%T*3c(2p+PGIwbHQD~hoRfyrSdcIgb*W6rKj}t={0;+KLOJS84f|q zcl4AEJ_+suJ^Max2)+m21??zW(Pi)uoEu}IJ87+GS|SPr4}(acrtiYsTF;SWSxqw7`z+$`Xwu}1OE!Py=+B( z53I-pZrmKZEA+`1NZ>Kx$IuJa)|A*E{l5UlK|pb1Yns&`XF%{t7i%hUw1TZLgHFC=`#jgRRB{vwH|h7QE1X#B<173aJ%=sbKXw!JY9oM7L{B7K^o zqQ*8DfZ!zjJ$e}44PQ8-|F6LC&sWocA~jw1!juAguE6(o@$T2f2L}%D`xn*Zg;%R@ zv5t%3_|O5m8Qz2rVo|XJ2WLuj8E-m9%piC0x%m>|TbZ;H12O82@e>CA zdap!&IHWrA{?CSS3os3*RBzmD9Jo79sn2jqO@bbew8I%+F2^BtVJmb2xDO7gDFqt3 zhePT#uuGwazQiFl6Nl7y!9#FJosC1POFO)1f@5(=?Sw<>0q|UKHMB1dsYYuY0_VXv z25`qAb1?Wz@K4ZLI3#WcF9W-s)X1bH_ihkI1kJPZ@7RX7xw!O-7v$zeX!r# zVtaoCUIX3-ofC}pe{y%6QegyRf4+w8cvu9c3HY=2I$DG6_BQwecm%dvm*F~kzXwJ+ z_!#s=?4CA}nAhOeIru+IkUjDJBq5v$**ldb=;l%@-+X{a-!`>1Y3k`Pdg_ZGQs-6zQD1 z@Du3Bnj_CmpW2yc}=H`nqC4eWa|B<=bnq9x4aWuBZr}#_SD0vF%bKu30n_2CZz--F^ zH^1ws1irNla5JE@64+`P;O3GymB3NUz>+r;G}NPu61id-;pQ|f5&W6%TL!qP>!AeH zSUu~0WNzlN{WtMUxzSiVVwF7j+Hn1k%uUzcN}!u%fSbn?l|Wz105`MyDS@{v1KfNk zSqV(A47`)j!z^%8?>gz`;5xrP{bCS6^(4YiDECbxUF-i&GPh9msGB^EL z-&=SlztI|+iNw2XtYsc '*-' THEN + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF ENDIF *-- Luego convierto los archivos incluidos @@ -2502,8 +2508,11 @@ DEFINE CLASS c_foxbin2prg AS SESSION * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) * tcLogFile (v? IN ) Nombre del log a usar + * tcType (v? IN ) Tipo de archivo de entrada. Compatibilidad con SCCTEXT.PRG + * - Si se indica "*" y tc_InputFile es un PJX, se procesan todos los archivos del proyecto y el PJX/2 + * - Si se indica "*-" y tc_InputFile es un PJX, se procesan todos los archivos del proyecto sin el PJX/2 *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName, tcLogFile + LPARAMETERS tc_InputFile, tcRecompile, toModulo, toEx, tcOriginalFileName, tcLogFile, tcType LOCAL lcFileSpec, lnFileCount, laFiles(1,1), lcFile, lnCodError, I, lnFileCount ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' @@ -2549,10 +2558,12 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDFOR *-- Convierto primero el proyecto - lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() + IF tcType <> '*-' THEN + lcFile = tc_InputFile + IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() + ENDIF ENDIF *-- Luego convierto los archivos incluidos From 72e2d2f91ab595b1206ba52048bd929206794633 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 21:04:55 +0100 Subject: [PATCH 20/37] =?UTF-8?q?Changeset:=20676=20-=20Actualizado=20el?= =?UTF-8?q?=20archivo=20de=20versi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 2db2a73..c5dcc35 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -28,6 +28,7 @@ Change History ------------------------------------------------------------- - Some enhancements in german translations (Lutz Scheffler) - Feature: Added multiprocessing of projects (*.pjx, *.pj2) when specifying "file.pjx", "*" (Lutz Scheffler) - Change FoxBin2Prg base class from custom to session (Lutz Scheffler) +- Feature: Allow processing all project files without converting the PJX/2 (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From b4513600614e661eeb4718364e50dc5fb99d7c6a Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 21:16:31 +0100 Subject: [PATCH 21/37] =?UTF-8?q?Changeset:=20678=20Correcci=C3=B3n=20de?= =?UTF-8?q?=20defectos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e43f5a9..3aa4791 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -138,6 +138,7 @@ * 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Bug Fix scx: Metadato del Dataenvironment no se genera bien cuando el Dataenvironment es renombrado * 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Lutz Scheffler) +* 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -203,6 +204,7 @@ * 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir definir el archivo de entrada con un path relativo (Agregado en v1.19.42) * 28/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Agregado en v1.19.42) +* 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -2267,14 +2269,14 @@ DEFINE CLASS c_foxbin2prg AS SESSION ELSE DO CASE - CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND EVL(tcType,'0') == '*' + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND LEFT(EVL(tcType,'0'),1) == '*' *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO PJX - .Evaluate_Full_PJX(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName) + .Evaluate_Full_PJX(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, tcType) EXIT - CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND EVL(tcType,'0') == '*' + CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND LEFT(EVL(tcType,'0'),1) == '*' *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO PJ2 - .Evaluate_Full_PJ2(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName) + .Evaluate_Full_PJ2(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, tcType) EXIT CASE EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' From 070c922cbe9aea6fac348f230c97de1a61a1b6f4 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Thu, 5 Mar 2015 21:29:58 +0100 Subject: [PATCH 22/37] =?UTF-8?q?Changeset:=20679=20-=20Actualizado=20log?= =?UTF-8?q?=20interno=20de=20cambios=20y=20cr=C3=A9ditos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 517509 -> 517527 bytes foxbin2prg.prg | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 513f3367b14bf26624f166c714876bfddbe723e6..73e26b3a768463a86e45f410a5f0bfbf843831ae 100644 GIT binary patch delta 14081 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 delta 14116 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 Xss^7BMw^j3UJ;oPRdW0!K0^FI%ko~F diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3aa4791..ae1166a 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -135,9 +135,12 @@ * 22/01/2015 FDBOZZO v1.19.42 Bug Fix: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Tuvia Vinitsky) * 25/02/2015 FDBOZZO v1.19.42 Bug Fix scx/vcx: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Lutz Scheffler) * 25/02/2015 FDBOZZO v1.19.42 Mejora: Hacer algunos mensajes de error más descriptivos (Lutz Scheffler) +* 03/03/2015 FDBOZZO v1.19.42 Mejora: Mejoras en la traducción al alemán (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir definir el archivo de entrada con un path relativo (Lutz Scheffler) * 03/03/2015 FDBOZZO v1.19.42 Bug Fix scx: Metadato del Dataenvironment no se genera bien cuando el Dataenvironment es renombrado -* 03/03/2015 FDBOZZO v1.19.42 Mejora: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Lutz Scheffler) +* 03/03/2015 FDBOZZO v1.19.42 Bug Fix scx: Agregada la generación del PJX/PJ2 cuando se indica "file.pjx", "*" (Lutz Scheffler) +* 03/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Lutz Scheffler) +* 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * * @@ -202,8 +205,11 @@ * 22/01/2015 Tuvia Vinitsky Bug Fix v1.19.41: Compatibilidad con SourceSafe rota porque se genera un error al realizar la consulta para soporte de archivo (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Reporte de Bug scx/vcx v1.19.41: Procesar solo un nivel de text/endtext, ya que no se admiten más niveles (Arreglado en v1.19.42) * 25/02/2015 Lutz Scheffler Mejora v1.19.41: Hacer algunos mensajes de error más descriptivos (Agregado en v1.19.42) +* 03/03/2015 Lutz Scheffler Mejora v1.19.41: Mejoras en la traducción al alemán (Agregado en v1.19.42) * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir definir el archivo de entrada con un path relativo (Agregado en v1.19.42) -* 28/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir usar máscaras "*" para procesar múltiples proyectos a la vez (Agregado en v1.19.42) +* 03/03/2015 Lutz Scheffler Bug Fix scx v1.19.41: Agregada la generación del PJX/PJ2 cuando se indica "file.pjx", "*" (Agregado en v1.19.42) +* 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir proceso multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Agregado en v1.19.42) +* 05/03/2015 Lutz Scheffler Mejora v1.19.41: Cambiar clase de base de FoxBin2Prg de custom a session (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) * * From b724b71e02c9c177947125afdaceac08a767dae6 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 6 Mar 2015 17:57:30 +0100 Subject: [PATCH 23/37] Changeset: 682 - Bug Fix pjx/pj2: Si se usa fin de linea (CR+LF) en los datos de las propiedades "Build" del pjx, se genera un pj2 corrupto --- foxbin2prg.prg | 140 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 125 insertions(+), 15 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 9f219d5..03e5e96 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -132,6 +132,7 @@ * 13/01/2015 FDBOZZO v1.19.41 Bug Fix scx/vcx: Detección errónea de estructuras PROCEDURE/ENDPROC cuando se usan como parámetros en LPARAMETERS (Ryan Harris) * 13/01/2015 FDBOZZO v1.19.41 Bug Fix db2: Detección errónea de tabla inválida cuando el tamaño es inferior a 328 bytes. Límite mínimo cambiado a 65 bytes. * 20/01/2015 FDBOZZO v1.19.42 Mejora: Validación de versión de Visual FoxPro, para evitar problemas ajenos a FoxBin2Prg +* 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX * * *--------------------------------------------------------------------------------------------------- @@ -4474,6 +4475,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION ELSE lcValue = CHRTRAN( LEFT( tcNullTerminatedValue, lnNullPos - 1 ), ['], ["] ) ENDIF + lcValue = THIS.encode_SpecialCodes_1_31(lcValue) RELEASE tcNullTerminatedValue, lnNullPos RETURN lcValue ENDPROC @@ -12787,6 +12789,10 @@ ENDDEFINE DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg + _MEMBERDATA = [] ; + + [] ; + + [] + #IF .F. LOCAL THIS AS c_conversor_pjm_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF @@ -13161,6 +13167,15 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg RETURN ENDPROC + + + PROCEDURE strExtract_CR + LPARAMETERS tcText + tcText = THIS.decode_SpecialCodes_1_31( STREXTRACT( tcText, 'Comments=', CR_LF ) ) + RETURN tcText + ENDPROC + + ENDDEFINE @@ -14307,6 +14322,8 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -14366,6 +14383,34 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE + PROCEDURE decode_SpecialCodes_1_31 + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcText (!@ IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + + PROCEDURE encode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + PROCEDURE setParsedProjInfoLine LPARAMETERS tcProjInfoLine THIS.setParsedInfoLine( THIS, tcProjInfoLine ) @@ -14375,14 +14420,31 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE PROCEDURE setParsedInfoLine LPARAMETERS toObject, tcInfoLine - LOCAL lcAsignacion, lcCurDir - lcCurDir = ADDBS(THIS._HomeDir) - IF LEFT(tcInfoLine,1) == '.' - lcAsignacion = 'toObject' + tcInfoLine - ELSE - lcAsignacion = 'toObject.' + tcInfoLine - ENDIF - &lcAsignacion. + + LOCAL lcAsignacion, lcCurDir, lcValue, loEx as Exception + + TRY + lcCurDir = ADDBS(THIS._HomeDir) + IF LEFT(tcInfoLine,1) == '.' + lcAsignacion = 'toObject' + tcInfoLine + ELSE + lcAsignacion = 'toObject.' + tcInfoLine + ENDIF + + lcValue = GETWORDNUM(lcAsignacion, 2, '=') + + IF TYPE(lcValue) = "C" THEN + lcAsignacion = GETWORDNUM(lcAsignacion, 1, '=') + '= THIS.encode_SpecialCodes_1_31(' + lcValue + ')' + ENDIF + + &lcAsignacion. + + CATCH TO loEx + loEx.UserValue = loEx.UserValue + 'lcAsignacion = [' + TRANSFORM(lcAsignacion) + ']' + CR_LF + THROW + ENDTRY + + RETURN ENDPROC @@ -14397,6 +14459,7 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE ELSE lcValue = CHRTRAN( LEFT( lcStr, MIN(tnLen, lnNullPos - 1 ) ), ['], ["] ) ENDIF + lcValue = THIS.encode_SpecialCodes_1_31(lcValue) RETURN lcValue ENDPROC @@ -19097,6 +19160,8 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -19120,6 +19185,34 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE + PROCEDURE decode_SpecialCodes_1_31 + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcText (!@ IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + + PROCEDURE encode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + PROCEDURE setParsedHeadInfoLine LPARAMETERS tcHeadInfoLine THIS.setParsedInfoLine( THIS, tcHeadInfoLine ) @@ -19129,13 +19222,30 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE PROCEDURE setParsedInfoLine LPARAMETERS toObject, tcInfoLine - LOCAL lcAsignacion, lcCurDir - IF LEFT(tcInfoLine,1) == '.' - lcAsignacion = 'toObject' + tcInfoLine - ELSE - lcAsignacion = 'toObject.' + tcInfoLine - ENDIF - &lcAsignacion. + + LOCAL lcAsignacion, lcCurDir, lcValue, loEx as Exception + + TRY + IF LEFT(tcInfoLine,1) == '.' + lcAsignacion = 'toObject' + tcInfoLine + ELSE + lcAsignacion = 'toObject.' + tcInfoLine + ENDIF + + lcValue = GETWORDNUM(lcAsignacion, 2, '=') + + IF TYPE(lcValue) = "C" THEN + lcAsignacion = GETWORDNUM(lcAsignacion, 1, '=') + '= THIS.encode_SpecialCodes_1_31(' + GETWORDNUM(lcAsignacion, 2, '=') + ')' + ENDIF + + &lcAsignacion. + + CATCH TO loEx + loEx.UserValue = loEx.UserValue + 'lcAsignacion = [' + TRANSFORM(lcAsignacion) + ']' + CR_LF + THROW + ENDTRY + + RETURN ENDPROC From 7200d1d07cb5ae02ac0a93c7a64f8c70328e04ca Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 6 Mar 2015 18:34:29 +0100 Subject: [PATCH 24/37] =?UTF-8?q?Changeset:=20684=20-=20Arreglo=20de=20def?= =?UTF-8?q?ecto=20en=20par=C3=A1metros=20de=20nuevos=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index ae1166a..808857c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -2277,12 +2277,12 @@ DEFINE CLASS c_foxbin2prg AS SESSION DO CASE CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJX' AND LEFT(EVL(tcType,'0'),1) == '*' *-- SE QUIEREN CONVERTIR A TEXTO TODOS LOS ARCHIVOS DE UN PROYECTO PJX - .Evaluate_Full_PJX(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, tcType) + .Evaluate_Full_PJX(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, '', tcType) EXIT CASE UPPER( JUSTEXT( EVL(tc_InputFile,'') ) ) == 'PJ2' AND LEFT(EVL(tcType,'0'),1) == '*' *-- SE QUIEREN CONVERTIR A BINARIO TODOS LOS ARCHIVOS DE UN PROYECTO PJ2 - .Evaluate_Full_PJ2(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, tcType) + .Evaluate_Full_PJ2(tc_InputFile, tcRecompile, @toModulo, @toEx, @tcOriginalFileName, '', tcType) EXIT CASE EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' From 21546622966051b56666d20a047badfc2148e8f2 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 6 Mar 2015 19:09:29 +0100 Subject: [PATCH 25/37] Changeset: 686 Me traigo el archivo de versiones --- FoxBin2PRGVersionFile.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 5d34353..d3aba30 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.41' - .VersionDate = Date(2015,01,18) + .VersionNumber = 'v1.19.42' + .VersionDate = Date(2015,03,01) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,6 +17,11 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2015/03/01 v1.19.42 +- Added VFP 9 SP1 runtime validation +- Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) +- Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) + 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. - Bug Fix vcx/scx: Erroneous detection of PROCEDURE/ENDPROC structures when used as parameters of LPARAMETERS and start in new line (Ryan Harris) From 163b5e2ebb3dcb9845e4bc06b9d23098ed351179 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Fri, 6 Mar 2015 19:11:56 +0100 Subject: [PATCH 26/37] =?UTF-8?q?Changeset:=20687=20-=20Actualizaci=C3=B3n?= =?UTF-8?q?=20del=20archivo=20de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index d3aba30..3d72b89 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -21,6 +21,7 @@ Change History ------------------------------------------------------------- - Added VFP 9 SP1 runtime validation - Bug Fix: Broken SourceSafe compatibility because an error is thrown when querying for file support (Tuvia Vinitsky) - Bug Fix scx/vcx: Process only one TEXT/ENDTEXT nesting level because TEXT/ENDTEXT can't be nested (Lutz Scheffler) +- Bug Fix pjx/pj2: If end of line (CR+LF) is used on pjx's "Build" properties data, generated pj2 is malformed 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From 90a6630b1aac2cace8a215669c0236c2e4a5a12b Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 9 Mar 2015 21:02:40 +0100 Subject: [PATCH 27/37] - Regenero EXE --- foxbin2prg.exe | Bin 517527 -> 519588 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 73e26b3a768463a86e45f410a5f0bfbf843831ae..1805134b91cc103f96f0f71363ddd5fe78006947 100644 GIT binary patch delta 16882 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 delta 15866 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 Date: Mon, 9 Mar 2015 21:14:58 +0100 Subject: [PATCH 28/37] =?UTF-8?q?-=20Archivo=20foxbin2prg.cfg=20renombrado?= =?UTF-8?q?=20a=20foxbin2prg.cfg.txt=20para=20no=20sobreescribir=20el=20ar?= =?UTF-8?q?chivo=20de=20configuraci=C3=B3n=20del=20usuario=20(Lutz=20Schef?= =?UTF-8?q?fler)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 1 + foxbin2prg.cfg => foxbin2prg.cfg.txt | 0 2 files changed, 1 insertion(+) rename foxbin2prg.cfg => foxbin2prg.cfg.txt (100%) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index e64df08..83bb08b 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -30,6 +30,7 @@ Change History ------------------------------------------------------------- - Change FoxBin2Prg base class from custom to session (Lutz Scheffler) - Feature: Allow processing all project files without converting the PJX/2 (Lutz Scheffler) - Bug Fix pjx/pj2: If end of line (CR+LF) is used on pjx's "Build" properties data, generated pj2 is malformed +- Feature: Default foxbin2prg.cfg configuration file renamed to foxbin2prg.cfg.txt to no overwrite user cfg (Lutz Scheffler) 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. diff --git a/foxbin2prg.cfg b/foxbin2prg.cfg.txt similarity index 100% rename from foxbin2prg.cfg rename to foxbin2prg.cfg.txt From a41c2bf67da297cac7dd2fb4f49d9d1798d8ee92 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Mon, 9 Mar 2015 21:19:24 +0100 Subject: [PATCH 29/37] =?UTF-8?q?-=20filetypes.conf:=20Agregada=20extensi?= =?UTF-8?q?=C3=B3n=20vbs=20como=20tipo=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filetypes.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/filetypes.conf b/filetypes.conf index ebb8295..829965e 100644 --- a/filetypes.conf +++ b/filetypes.conf @@ -15,3 +15,4 @@ .db2:txt .dc2:txt .mn2:txt +.vbs:txt \ No newline at end of file From 2b7d196f51eb28cdfd6e020ccbdce0e6559706e6 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 10 Mar 2015 23:53:08 +0100 Subject: [PATCH 30/37] =?UTF-8?q?-=20Agregado=20soporte=20de=20errOut=20DO?= =?UTF-8?q?S=20e=20implementado=20en=20writeErrorLog=20cuando=20se=20logue?= =?UTF-8?q?an=20errores=20-=20Agregado=20soporte=20total=20de=20comodines?= =?UTF-8?q?=20*=3F=20en=20nombres=20de=20archivo=20para=20procesar=20m?= =?UTF-8?q?=C3=BAltiples=20archivos=20de=20la=20misma=20extensi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 60 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index dbd2553..d879a2f 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -143,6 +143,7 @@ * 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -212,6 +213,7 @@ * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir proceso multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Cambiar clase de base de FoxBin2Prg de custom a session (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -564,6 +566,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -597,6 +600,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -654,6 +659,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION 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_StdOutHabilitado = .T. l_Main_CFG_Loaded = .F. n_ExtraBackupLevels = 1 n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00 @@ -707,6 +713,11 @@ DEFINE CLASS c_foxbin2prg AS SESSION ON ESCAPE ERROR 1799 SET ESCAPE ON + *-- Funciones para escribir en StdOut + DECLARE INTEGER GetStdHandle IN Win32API INTEGER nHandleType + DECLARE INTEGER WriteFile IN Win32API INTEGER hFile, STRING @ cBuffer ; + , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 + ERASE (THIS.c_ErrorLogFile) ERASE (THIS.c_LogFile) @@ -2069,7 +2080,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF - CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTSTEM( tc_InputFile ) + CASE lcInputFile_Type == C_FILETYPE_FILE AND ( '*' $ JUSTSTEM( tc_InputFile ) OR '?' $ JUSTSTEM( tc_InputFile ) ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN lcFileSpec = FULLPATH( tc_InputFile ) .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' @@ -3281,6 +3292,51 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE errOut + *-- DEVOLUCIÓN DE SALIDA A ERROUT (-12) + LPARAMETERS tcTexto + + TRY + IF THIS.l_StdOutHabilitado + LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO + lcOutput = EVL(tcTexto,'') + CR_LF + lnOutHandle = GetStdHandle(-12) && CAPTURAR ERROR DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS 2>&1 | FIND /V "" + lnBytesWritten = 0 + lnOverlappedIO = 0 + WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO) + ENDIF + + CATCH TO loException + THIS.l_StdOutHabilitado = .F. + + ENDTRY + + RETURN + ENDPROC + + + PROCEDURE stdOut + *-- DEVOLUCIÓN DE SALIDA A STDOUT (-11) + LPARAMETERS tcTexto + + TRY + IF THIS.l_StdOutHabilitado + LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO + lcOutput = EVL(tcTexto,'') + CR_LF + lnOutHandle = GetStdHandle(-11) && CAPTURAR STDOUT DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS | FIND /V "" + lnBytesWritten = 0 + lnOverlappedIO = 0 + WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO) + ENDIF + + CATCH TO loException + THIS.l_StdOutHabilitado = .F. + + ENDTRY + + RETURN + ENDPROC + PROCEDURE writeErrorLog LPARAMETERS tcText, tnTimestamp @@ -3291,6 +3347,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextErr = THIS.c_TextErr + EVL(tcText,'') + CR_LF + THIS.errOut(tcText) THIS.l_Error = .T. CATCH ENDTRY @@ -3315,6 +3372,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextLog = THIS.c_TextLog + EVL(tcText,'') + CR_LF + THIS.stdOut(tcText) CATCH ENDTRY ENDPROC From 3947ac4ca84c7e6fe183dbde5487fd18c36c5401 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 10 Mar 2015 23:54:44 +0100 Subject: [PATCH 31/37] - Actualizado el proyecto por haber quitado un UT en desuso --- foxbin2prg.pj2 | 2 -- foxbin2prg.pjt | Bin 701424 -> 709438 bytes foxbin2prg.pjx | Bin 9513 -> 9513 bytes 3 files changed, 2 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 085a6e4..410e913 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -103,7 +103,6 @@ WITH loProject.FILES .ADD('tests\ut__foxbin2prg__c_conversor_base__dobackup.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> - .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> @@ -135,7 +134,6 @@ WITH loProject.FILES .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__dobackup.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg').Exclude = .T. - .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg').Exclude = .T. diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index a59905a0cce9289af2fdd85a7746e41245be0d8b..55ed20485b7adee5cdec0fa301e632f255e3a83b 100644 GIT binary patch delta 39316 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 X^NWW#9V+bdH&ybV{l8!T|I2>?5QNN? delta 32810 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

{t)J6PgQ2Da~8v5)}`4f24I=L>va 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®`&5uH2SiT9`X&RC#M# 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 i)^jn`lyXguRqDqa9{W>aYZ From cadd91bda3788cb5f50772a23cfcf9acfc8723fb Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 01:53:28 +0100 Subject: [PATCH 32/37] =?UTF-8?q?-=20Agregado=20nuevo=20par=C3=A1metro=20p?= =?UTF-8?q?ara=20permitir=20un=20CFG=20alternativo=20(Lutz=20Scheffler)=20?= =?UTF-8?q?-=20Agregado=20nuevo=20m=C3=A9todo=20API=20get=5FTarget()=20par?= =?UTF-8?q?a=20obtener=20informaci=C3=B3n=20de=20los=20archivos=20procesad?= =?UTF-8?q?os=20(Lutz=20Scheffler)=20-=20Agregada=20nueva=20salida=20de=20?= =?UTF-8?q?archivos=20procesados=20a=20stdOut=20(Lutz=20Scheffler)=20-=20A?= =?UTF-8?q?rreglada=20la=20cancelaci=C3=B3n=20del=20procesamiento=20con=20?= =?UTF-8?q?tecla=20Esc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 519588 -> 523416 bytes foxbin2prg.prg | 348 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 243 insertions(+), 105 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 1805134b91cc103f96f0f71363ddd5fe78006947..793fb6c9832effefc8008361d42a75524ff236e1 100644 GIT binary patch delta 33922 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d879a2f..4f9f6e0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -242,11 +242,12 @@ * 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 debe anular el timestamp ('1') o no ('0' ó vacío) -* +* tcCFG_File (v? IN ) Indica si se debe usar un archivo de configuración distinto al predeterminado +*--------------------------------------------------------------------------------------------------- * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName ; - , tcRecompile, tcNoTimestamps + , tcRecompile, tcNoTimestamps, tcCFG_File *-- NO modificar! / Do NOT change! #DEFINE C_CMT_I '*--' @@ -464,16 +465,14 @@ loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; - , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ) + , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ; + , .F., .F., .F., tcCFG_File ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) -*IF _VFP.STARTMODE <= 1 -* RETURN lnResp -*ENDIF SET COVERAGE TO -IF _VFP.STARTMODE # 4 +IF _VFP.STARTMODE <> 4 && 4 = Visual FoxPro was started as a distributable .app or .exe file. STORE NULL TO loEx, loCnv RELEASE loEx, loCnv RETURN lnResp @@ -489,7 +488,7 @@ STORE NULL TO loEx, loCnv RELEASE loEx, loCnv *-- Muy útil para procesos batch que capturan el código de error -DECLARE ExitProcess IN Win32API INTEGER ExitCode +DECLARE ExitProcess IN Win32API INTEGER ExitCode && To read returned error code with ERRORLEVEL from Windows ExitProcess(1) && Esta debe ser de las últimas instrucciones QUIT @@ -500,9 +499,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION LOCAL THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; + + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -543,11 +543,13 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -575,7 +577,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; - + [] ; + [] ; + [] ; + [] ; @@ -606,6 +607,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -613,7 +615,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] - DIMENSION a_ProcessedFiles(1), a_ProcessedFiles_0(1) + DIMENSION a_ProcessedFiles(1, 5) PROTECTED l_ConfigEvaluated, n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 @@ -647,6 +649,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_ShowProgressbar = 1 n_ForceWriteIfReadOnly = 0 l_AllowMultiConfig = .T. + l_CancelWithEscKey = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. l_UseClassPerFile = .F. @@ -668,7 +671,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_FileHandle = 0 n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext n_ProcessedFilesCount = 0 && Contador genérico de procesados - n_ProcessedFiles_0 = 0 && Contador usado para los archivos file.ext o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL @@ -698,7 +700,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION PROCEDURE INIT - LPARAMETERS tcCFG_File + LPARAMETERS tcCFG_File, tcCancelWithEscKey LOCAL lcSys16, lnPosProg, lc_Foxbin2prg_EXE, laValues(1,5) SET DELETED ON @@ -710,13 +712,21 @@ DEFINE CLASS c_foxbin2prg AS SESSION SET TABLEPROMPT OFF SET POINT TO '.' SET SEPARATOR TO ',' - ON ESCAPE ERROR 1799 - SET ESCAPE ON + tcCancelWithEscKey = EVL(tcCancelWithEscKey, '') + + IF NOT EMPTY(tcCancelWithEscKey) + THIS.l_CancelWithEscKey = ( tcCancelWithEscKey == '1' ) + ENDIF + + IF THIS.l_CancelWithEscKey THEN + ON ESCAPE ERROR 1799 + SET ESCAPE ON + ENDIF *-- Funciones para escribir en StdOut DECLARE INTEGER GetStdHandle IN Win32API INTEGER nHandleType DECLARE INTEGER WriteFile IN Win32API INTEGER hFile, STRING @ cBuffer ; - , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 + , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 ERASE (THIS.c_ErrorLogFile) ERASE (THIS.c_LogFile) @@ -776,6 +786,39 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE addProcessedFile + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcInputFile (v? IN ) Path del archivo (ej: 'C:\DESA\pruebas varias\lib.vcx') + * tcProcessed (v? IN ) Procesado ("P0"=Not Processed, "P1"=Processed, "P2"=Expanded) + * tcHasErrors (v? IN ) Tuvo Errores ("E0"=No Errors, "E1"=Has Errors) + * tcSupported (v? IN ) Archivo soportado ("S0"=Unsupported, "S1"=Supported) + * tcReserved (v? IN ) Reservado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved + + LOCAL llAdded + + IF NOT EMPTY(tcInputFile) THEN + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + *-- Buscar si fue procesado antes + IF .n_ProcessedFiles = 0 OR ASCAN( .a_ProcessedFiles, tcInputFile, 1, 0, 1, 1+2+4 ) = 0 THEN + .n_ProcessedFiles = .n_ProcessedFiles + 1 + DIMENSION .a_ProcessedFiles(.n_ProcessedFiles, 5) + .a_ProcessedFiles(.n_ProcessedFiles, 1) = tcInputFile + .a_ProcessedFiles(.n_ProcessedFiles, 2) = EVL(tcProcessed, '') + .a_ProcessedFiles(.n_ProcessedFiles, 3) = EVL(tcHasErrors, '') + .a_ProcessedFiles(.n_ProcessedFiles, 4) = EVL(tcSupported, '') + .a_ProcessedFiles(.n_ProcessedFiles, 5) = EVL(tcReserved, '') + llAdded = .T. + ENDIF + ENDWITH + ENDIF + + RETURN llAdded + ENDPROC + + PROCEDURE AvanceDelProceso LPARAMETERS tcTexto, tnValor, tnTotal, tnTipo @@ -805,6 +848,16 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE ClearProcessedFiles + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + .n_ProcessedFilesCount = 0 + .n_ProcessedFiles = 0 + DIMENSION .a_ProcessedFiles(1, 5) + .a_ProcessedFiles = '' + ENDWITH + ENDPROC + + FUNCTION get_l_ConfigEvaluated RETURN THIS.l_ConfigEvaluated ENDFUNC @@ -815,6 +868,33 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDFUNC + FUNCTION get_Target + LPARAMETERS taTargets, tcFileMask + + EXTERNAL ARRAY taTargets + + LOCAL lnCount, I + lnCount = 0 + + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + tcFileMask = EVL(tcFileMask, '*') + + FOR I = 1 TO .n_ProcessedFiles + IF LIKE( tcFileMask, .a_ProcessedFiles(I,1) ) THEN + lnCount = lnCount + 1 + DIMENSION taTargets(lnCount,5) + taTargets(lnCount,1) = .a_ProcessedFiles(I,1) + taTargets(lnCount,2) = .a_ProcessedFiles(I,2) + taTargets(lnCount,3) = .a_ProcessedFiles(I,3) + taTargets(lnCount,4) = .a_ProcessedFiles(I,4) + taTargets(lnCount,5) = .a_ProcessedFiles(I,5) + ENDIF + ENDFOR + ENDWITH + + RETURN lnCount + ENDFUNC + PROCEDURE l_Debug_ACCESS IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) RETURN THIS.l_Debug @@ -1847,7 +1927,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION , tcExt == 'MNX', .c_MN2 ; , tcExt == 'DBF', .c_DB2 ; , tcExt == 'DBC', .c_DC2 ; - , 'XXX' ) + , tcExt ) ENDWITH && THIS RELEASE tcExt @@ -1927,14 +2007,15 @@ DEFINE CLASS c_foxbin2prg AS SESSION * tcBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1') * tcClearUniqueID (v? IN ) Indica si se debe limpiar el UniqueID ('1') o no ('0' ó vacío) * tcOptimizeByFilestamp (v? IN ) Indica si se debe optimizar por filestamp ('1') o no ('0' ó vacío) + * tcCFG_File (v? IN ) Indica si se debe usar un archivo de configuración distinto al predeterminado *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ; - , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp + , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp, tcCFG_File TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type ; - , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption ; + , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption, lnErrorIcon ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ; @@ -1946,8 +2027,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH - DIMENSION .a_ProcessedFiles_0(1) - .n_ProcessedFiles_0 = 0 lnPCount = 0 lcInputFile_Type = '' @@ -1963,6 +2042,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION * EXIT *ENDIF + .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) + IF VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504 ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC ENDIF @@ -2224,7 +2305,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, @toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() DO CASE @@ -2344,19 +2425,27 @@ DEFINE CLASS c_foxbin2prg AS SESSION CATCH TO toEx lnCodError = toEx.ERRORNO + lnErrorIcon = 64 IF VARTYPE(loLang) <> 'O' THEN loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - toEx.UserValue = toEx.UserValue + 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.UserValue = toEx.UserValue + 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' + CR_LF + lnErrorIcon = 16 + ENDIF IF ATC('-SHOWMSG', ('-' + tcType)) >= 1 THEN - toEx.UserValue = toEx.UserValue + 'lcInputFile_Type = [' + TRANSFORM(lcInputFile_Type) + ']' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.UserValue = toEx.UserValue + 'lcInputFile_Type = [' + TRANSFORM(lcInputFile_Type) + ']' + CR_LF + ENDIF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF - toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF + ENDIF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) @@ -2367,7 +2456,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF IF THIS.l_ShowErrors - MESSAGEBOX( lcErrorInfo, 0+16+4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + MESSAGEBOX( lcErrorInfo, 0 + lnErrorIcon + 4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) ENDIF IF tlRelanzarError @@ -2471,7 +2560,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN lnFileCount = 0 - SCAN FOR NOT DELETED() + SCAN FOR NOT DELETED() AND Type <> 'H' lnFileCount = lnFileCount + 1 DIMENSION laFiles(lnFileCount,1) laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) @@ -2481,11 +2570,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- Convierto primero el proyecto IF tcType <> '*-' THEN - lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF + lcFile = tc_InputFile + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() ENDIF *-- Luego convierto los archivos incluidos @@ -2494,18 +2581,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - IF .n_ProcessedFiles_0 > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) - LOOP - ENDIF - ENDIF - - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() + + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ELSE + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF .addProcessedFile( lcFile, 'P0', 'E0', 'S0', 'RR' ) + .updateProcessedFile() + ENDIF ENDIF + + .writeLog_Flush() ENDFOR ENDWITH ENDTRY @@ -2580,10 +2673,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- Convierto primero el proyecto IF tcType <> '*-' THEN lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() ENDIF *-- Luego convierto los archivos incluidos @@ -2592,18 +2683,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - IF .n_ProcessedFiles_0 > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) - LOOP - ENDIF - ENDIF - - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() + + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ELSE + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF .addProcessedFile( lcFile, 'P0', 'E0', 'S0', 'RR' ) + .updateProcessedFile() + ENDIF ENDIF + + .writeLog_Flush() ENDFOR ENDWITH ENDTRY @@ -2611,11 +2708,17 @@ DEFINE CLASS c_foxbin2prg AS SESSION HIDDEN PROCEDURE ejecutar_WriteErrorLog - LPARAMETERS toEx, tcErrorInfo + LPARAMETERS toEx as Exception, tcErrorInfo LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang - tcErrorInfo = THIS.Exception2Str(@toEx) + CR_LF + loLang.C_SOURCEFILE_LOC + TRANSFORM(THIS.c_InputFile) + CR_LF + + IF toEx.ErrorNo = 1799 THEN && Conversion Cancelled + tcErrorInfo = loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + ELSE + tcErrorInfo = THIS.Exception2Str(@toEx) + CR_LF + loLang.C_SOURCEFILE_LOC + TRANSFORM(THIS.c_InputFile) + CR_LF + ENDIF + ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) *-- Escribo la información de error en la variable log de errores @@ -2687,19 +2790,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION lc_BaseFile = FORCEPATH( FORCEEXT( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTEXT(.c_InputFile)) , JUSTPATH(.c_InputFile) ) ENDIF - IF .n_ProcessedFiles > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles, lc_BaseFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: El archivo Base [' + JUSTFNAME(lc_BaseFile) + '] ya fue procesado, por lo que no se procesará [' + JUSTFNAME(.c_InputFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC ) ) - EXIT - ENDIF - ENDIF - - .n_ProcessedFiles = .n_ProcessedFiles + 1 - DIMENSION .a_ProcessedFiles(.n_ProcessedFiles) - .a_ProcessedFiles(.n_ProcessedFiles) = lc_BaseFile - *-- Verifico si se debe forzar la redirección al archivo principal IF '.' $ JUSTSTEM(.c_InputFile) .c_InputFile = lc_BaseFile @@ -2716,10 +2806,12 @@ DEFINE CLASS c_foxbin2prg AS SESSION .c_OriginalFileName = FORCEEXT(.c_OriginalFileName,'pjx') ENDIF - *-- Conteo de archivos normales procesados - .n_ProcessedFiles_0 = .n_ProcessedFiles_0 + 1 - DIMENSION .a_ProcessedFiles_0(.n_ProcessedFiles_0) - .a_ProcessedFiles_0(.n_ProcessedFiles_0) = .c_InputFile + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF NOT .addProcessedFile( .c_InputFile, 'P1', 'E0', 'S1', 'RR' ) THEN + *.writeLog( 'OPTIMIZACIÓN: El archivo Base [' + JUSTFNAME(lc_BaseFile) + '] ya fue procesado, por lo que no se procesará [' + JUSTFNAME(.c_InputFile) + ']' ) + .writeLog( TEXTMERGE( loLang.C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC ) ) + EXIT + ENDIF .writeLog( C_TAB + 'c_OriginalFileName: ' + .c_OriginalFileName ) .writeLog( ) @@ -2963,12 +3055,16 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF .normalizarCapitalizacionArchivos() + .updateProcessedFile() ENDWITH && THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' CATCH TO toEx lnCodError = toEx.ERRORNO *lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + THIS.c_InputFile + *-- updateProcessedFile( tcProcessed, tcHasErrors, tcSupported, tcReserved ) + THIS.updateProcessedFile( '', 'E1' ) + IF THIS.l_Debug IF _VFP.STARTMODE = 0 SET STEP ON @@ -3338,6 +3434,37 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE updateProcessedFile + *--------------------------------------------------------------------------------------------------- + * ACTUALIZA ALGUNOS DATOS DEL ARCHIVO PROCESADO ACTUAL + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcProcessed (v? IN ) Fue Procesado ("P") + * tcHasErrors (v? IN ) Tuvo Errores ("E") + * tcSupported (v? IN ) Archivo soportado ("U"=Unsupported) + * tcReserved (v? IN ) Reservado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcProcessed, tcHasErrors, tcSupported, tcReserved + + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + IF NOT EMPTY(tcProcessed) + .a_ProcessedFiles(.n_ProcessedFiles, 2) = EVL(tcProcessed, '') + ENDIF + IF NOT EMPTY(tcHasErrors) + .a_ProcessedFiles(.n_ProcessedFiles, 3) = EVL(tcHasErrors, '') + ENDIF + IF NOT EMPTY(tcSupported) + .a_ProcessedFiles(.n_ProcessedFiles, 4) = EVL(tcSupported, '') + ENDIF + .stdOut( .a_ProcessedFiles(.n_ProcessedFiles,2) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,3) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,4) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,5) ; + + ',' + LOWER(.a_ProcessedFiles(.n_ProcessedFiles,1)) ) + ENDWITH + ENDPROC + + PROCEDURE writeErrorLog LPARAMETERS tcText, tnTimestamp @@ -3372,7 +3499,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextLog = THIS.c_TextLog + EVL(tcText,'') + CR_LF - THIS.stdOut(tcText) CATCH ENDTRY ENDPROC @@ -4246,7 +4372,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toModulo (!@ OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (!@ OUT) Objeto con información del error - * toFoxBin2Prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (!@ IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. @@ -5502,13 +5628,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS C_CONVERSOR_BASE * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) * toModulo (!@ OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (!@ OUT) Objeto con información del error - * toFoxBin2Prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (!@ IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) ENDPROC @@ -7739,7 +7865,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; @@ -7776,10 +7902,16 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 .writeLog( C_TAB + '- ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) - LOOP && Salteo esta clase + LOOP && Salteo esta clase porque no concuerda con las anotadas ENDIF .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF toFoxBin2Prg.addProcessedFile( lcInputFile_Class, 'P2', 'E0', 'S1', 'RR' ) THEN + toFoxBin2Prg.updateProcessedFile() + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -8095,7 +8227,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; @@ -8136,6 +8268,12 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ENDIF .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF toFoxBin2Prg.addProcessedFile( lcInputFile_Class, 'P2', 'E0', 'S1', 'RR' ) THEN + toFoxBin2Prg.updateProcessedFile() + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -8453,7 +8591,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toProject, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toProject, @toEx ) + DODEFAULT( @toProject, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' @@ -9253,7 +9391,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toReport, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toReport, @toEx ) + DODEFAULT( @toReport, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' @@ -9695,7 +9833,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toTable, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toTable, @toEx ) + DODEFAULT( @toTable, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' @@ -9994,7 +10132,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toDatabase, @toEx ) + DODEFAULT( @toDatabase, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' @@ -10177,7 +10315,7 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toMenu, @toEx ) + DODEFAULT( @toMenu, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' @@ -10399,7 +10537,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) ENDPROC @@ -12156,7 +12294,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; @@ -12459,7 +12597,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' @@ -12787,7 +12925,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; @@ -13133,7 +13271,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; @@ -13528,7 +13666,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, loRegCab, loRegDataEnv, loRegCur, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen ; @@ -13698,7 +13836,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laDatabases(1), lnDatabases_Count, laDatabases2(1), lnLen, lc_FileTypeDesc, laLines(1), lcOutputFile ; @@ -13867,7 +14005,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toDatabase, @toEx ) + DODEFAULT( @toDatabase, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' @@ -13940,7 +14078,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toMenu, @toEx ) + DODEFAULT( @toMenu, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' @@ -22725,7 +22863,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la table" .C_BACKUP_OF_LOC = "Faire de sauvegarde des: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Vous ne pouvez pas générer un fichier [<>] car il est en lecture seule" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMISATION: Fichier de base [<>] Déjà traitée, en sautant traitement de fichier [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMISATION: Fichier de base [<>] Déjà traitée, en sautant traitement de fichier [<>]" .C_CONFIGFILE_LOC = "Utilisation du fichier de configuration:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Annulé par l'utilisateur" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir tous les fichiers dans un Projet" @@ -22753,7 +22891,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] ne est pas supporté" .C_FILE_NOT_FOUND_LOC = "Fichier introuvable" .C_FILENAME_LOC = "Fichier" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERREUR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERREUR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Exemple pour générer TXT de tous VCX dans 'c:\development\classes', sans montrer la fenêtre d'erreur et générer fichier LOG: " + CR_LF ; @@ -22810,7 +22948,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la tabla" .C_BACKUP_OF_LOC = "Haciendo Backup de: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "No se puede generar el archivo [<>] porque es ReadOnly" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZACIÓN: El archivo Base [<>] ya fue procesado, ignorando el procesamiento del archivo [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZACIÓN: El archivo Base [<>] ya fue procesado, ignorando el procesamiento del archivo [<>]" .C_CONFIGFILE_LOC = "Usando archivo de configuración:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversión Cancelada por el usuario" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir todos los archivos de un Proyecto" @@ -22838,7 +22976,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "El archivo [<<.c_InputFile>>] no está soportado" .C_FILE_NOT_FOUND_LOC = "No se encontró el archivo" .C_FILENAME_LOC = "Archivo" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: INFORMACIÓN DE SINTAXIS" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cNoMostrarErrores ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Ejemplo para generar los TXT de todos los VCX de 'c:\desa\clases', sin mostrar ventana de error y generando archivo LOG: " + CR_LF ; @@ -22895,7 +23033,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "von Tabelle" .C_BACKUP_OF_LOC = "Erzeuge Backup von: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren, da sie schreibgeschützt ist" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" .C_CONFIGFILE_LOC = "Benutze Konfigurationsdatei:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Konvertierung durch den Benutzer abgebrochen" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "alle Dateien in einem Projekt zu konvertieren" @@ -22923,7 +23061,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "Datei [<<.c_InputFile>>] wird nicht unterstützt" .C_FILE_NOT_FOUND_LOC = "Datei nicht gefunden" .C_FILENAME_LOC = "Datei" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Ein Beispiel für die Generierung der TXT von allen VCX in 'c:\development\classes', ohne Anzeige des Fehlerfensters und Generierung der LOG Datei: " + CR_LF ; @@ -22980,7 +23118,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "of table" .C_BACKUP_OF_LOC = "Doing Backup of: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Cannot generate file [<>] because it is ReadOnly" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimization: Base File [<>] already processed, skipping processing of file [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimization: Base File [<>] already processed, skipping processing of file [<>]" .C_CONFIGFILE_LOC = "Using configuration file:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Cancelled by the user" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convert all files in a Project" @@ -23008,7 +23146,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] is not supported" .C_FILE_NOT_FOUND_LOC = "File not found" .C_FILENAME_LOC = "File" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Example of generating TXT from all VCX in 'c:\development\classes', without showing error window and generating LOG file: " + CR_LF ; From cd73d10b504cb320c6f67d106b06adf15b203b65 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 13:55:26 +0100 Subject: [PATCH 33/37] =?UTF-8?q?-=20Agregado=20nuevo=20switch=20l=5FAutoC?= =?UTF-8?q?learProcessedFiles=20con=20.T.=20por=20defecto=20-=20Arreglado?= =?UTF-8?q?=20reporte=20que=20ten=C3=ADa=20un=20CR=20en=20vez=20de=20un=20?= =?UTF-8?q?CR+LF=20en=20uno=20de=20los=20campos=20memo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/test_report.frt | Bin 2432 -> 828 bytes TESTS/DATOS_READONLY/test_report.frx | Bin 4300 -> 4300 bytes foxbin2prg.exe | Bin 523416 -> 523625 bytes foxbin2prg.prg | 39 ++++++++++++++++----------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/TESTS/DATOS_READONLY/test_report.frt b/TESTS/DATOS_READONLY/test_report.frt index 4d9e111014e6544a00ac5fd7011977152ba999bc..981baef4d752ca85b8383fbd658ba07980e5ee61 100644 GIT binary patch delta 73 zcmZn=-owVhz`$(7z`($`QScMvL

t%uHI78<@o=H!}-MFajlnl^hjHQj1Hhc)6St Z3raHc^Awf93Y=M-Co{8(Pj+UF0{~KZ5i9@z literal 2432 zcmeHH?`zaB7|y;)r3m{A-W8PX%h3%LQ7YD6#sZb~Qp2T5Lqy^?B`HYj} zFvu8XJUIyi$etg^F$}8LY5>#1`^L;=*ZqLQUe&r+7gp79auf!v5=A8vQO2*_2J1FY z%Zv~YnX!W4(&J6>X^2qE1+nMHN!&oc2ngDjgs#|thGJ< ztM-L*u}NN0IthbZF1#7};2$)iFu0$I$NxFy mom(NuP))f`X^JPb&30_4w*>(((1j zue(|Zap~l5@O?XWT!>Ojm)WWSNw0vrrXM02li$;*d`A2P+{poVd7)}2i&6-41HQ5qe7@NWfiK5TN%DAZ5_C|4TTef z0Tvs4hvO=rFP!he+{y4&K649?g`tTK`>)-B4gv}TKAeA?1dL_tD^+*UIc1Qtur z`w{K_00^Pa!qFaXT55|z884u?7ogu7>t~jEWoc$YpMx8=pV~9&Li!n`=NX>mT8Du2 zK88CvN3FNwemsWbgHJmCfam>)QkhE4e1y4x$5kP?dw|a?rAUBzkmpm~`1LgpF`VWf z1~3ng@GyXRWQ2zS%wr74{ObH{JN_k}mol8M#~DuZ3jyW{j$7k0nbH8olW_gj6Cwi- zXV5$aJ~;j@ZzpJ;W_S@UCy;rD;Z>u%^J$(1AD$o2b#7EG%ySH%S3b9Z2>tvBr*jW8 zFTf4+2et3+--`^-v<=HE^h@Bw`PHscF7-X=m&duYrO>Z1oIo)BD#NGNIZN3U`d(vr z-IVM6_&U!kBv@*1-e9<~l`55&sNZBb8Y@?o)PZ>mZn%D>oU3W2VSoQ zhvB||>ICiIW%yhfRY?sZ%zJRd^H-NL&5h3y=6#0GY%>iBRDS?|WdByOTqsFNQhzwY zGix33j~K2_tJF;uK7m4iJjP|_+ke7vd_QxaJ)!?ohSyC|$m#$@=*tY3vzgSnq;Hh| zjNvxRuz>(rzt7=@>xc7){^v9Y^993k{?`0UhCAz|Zcm{33Ve7z{QmkNVZP?M4L8_) z!}OmvRriI}-+~|6zowLWB@eIw`a7Q6B`)y_{Cl2PB@QW&`GM#2$~JUK&5v+HeYk&1 zi7yzAp#GU}-~EeG`~p7AuT9;hKT-V3@M}@`zX=hoax=55Iyx5zOQO!=D2aA={3>C4 zs5aR~5EbHKVaub<70u`+i=wX1H~X`0%MXYNV6-@iT{1}~8Ce`>QH&?5@#}nD=Gr&% z^b;i%h_Ln0M?_9&BHrTY4m4OtqHdsVe>d*ebg}gOTOz50^~}96FKsBY)!0d1i=pL1VwBjconDTI4BGu z_>1;n+k1QKT^|v-MM-VcQOdx0-d)@fnH-9AeBuddh#I$v$2muL@=^3cb~L;0(q|o-+dTu8-WY7rXuYPL8>Gx3NUranV{toYF$9Mn$ literal 4300 zcmeH}zl$VA6vxXu#k&LVl+#2I8v_I3mhRb^y8YOWv%0G7uHLy_gHr+1TvSM^@itLlkQ zA3t-w5aRNwKcM?^?6?r6mM*hZ0g_$=b)s(~8k67KsC-8JB-E(^cX^>|CyP=DbC%(D zdcp0NioDEiP{*j%5%AQ`mi%_~Bcz@fS$K%f;tr^5dsGN@v8+N@aVNv~N?QkR?n2|_ zV1nHa-{iQ;=ey32VD4u4BA>ZkkAy!*p<{4g)%;Y;y!@BH`dSW<&~w#guVnd^q<;`>8|trURa*kdv#e;YZ=La9P{2|Z#7Ns(knt2QJFdo+hc+3Hd6eN4 zf0)2LwuXlZ%;Rf#n7};2aKu;V2g~^{^SqRyzMf<_#TN|BQyjO(Wiq7+il?Fat0zPT z9%|4$13oDKC0_<;o@ICu4kwU#j^S0K+xj%mgAeP+bDbMi3-bcQ=as)(K!kpA4X3(? zn3tf2_Xqj6=kH~PXWEA475WwMVSKf#luP{x`qlN^*;44&7)~IFex2b{>zt+A75Tlv z@VY5i_v4#9uW-SVzj=${##X9SK1KaD!{Mx4Rnh?F9jM{@m2$48m6G=$zIPe_)arnR zevjdPd>RD)?=yU^jH;vt5#|G^Vg1#mOmpM!2=gJsXSSJ!3sipueq{d^vfNdYE=m3I z8lG9}h=0OxbwQX5RlZhU5F0``Z)wf6nl_DGFKbg9!Zv!{uxybuQ@} zrN3mj%`$8t0M_p-sNwpd{xJTWVlZDb9QC*2-!R-+C-t%d&9~sg`tbYfjfDA*=Qf;R z^F1?u+EncqR{sEgWdE8{>V@3L0_Y!kZufAA7vMkfyed(oK;~zj&nw%|AvM214fDhK z+mrZ$p#=4>ynp)_qxcPcc)vDvd;N*xcZT19zW+stXpx(lUDVN~aa_j-`^9FJB;)O5 zvNIk}q9mGZ(kh+6FM=c+aU4@49yZQ-)LqetUb4tPs7Y>rSx$S0I7(=?BzDOt8KIS7 zyskKU$s+&g^e4fLrX@L=WZkje!3;|~HpugnxSwrn>qqwLA0`=mJE5$aNFeJaJ4l=i zubO0cS&-zo4SY4rVFNk-OOtF4lZcSy`TtsyNj$QX?QkY1 z{F&T@Y~UAdK{mFwRtrKtkypKPJ(pks*Q(CqMmN#`(eg}^6A6mcQLQfDNXOl(JM4}U z=Ug1c*-aDzWOXJxHml}n6HRYMmN=hV?R~Qy8p)____SMFdPZLL{G%}q?Qbq>TtUv# z03pdMn5{$W&Ln3)!cImvW4>GboSaF&kMe3Iq6TK82T9-ZDsO+=p+DXr$y@&fE6k<) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 793fb6c9832effefc8008361d42a75524ff236e1..c2fc92665c8ece10bfb8a5949a6c241d1394c558 100644 GIT binary patch delta 17630 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 z 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 4f9f6e0..e7730f2 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -549,6 +549,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -620,7 +621,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- n_FB2PRG_Version = 1.19 *-- - c_Language = '' && EN, FR, ES, DE + c_Language = '' && EN, FR, ES, DE c_loc_processing_file = '' c_loc_process_progress = '' c_FB2PRG_EXE_Version = '' @@ -649,6 +650,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_ShowProgressbar = 1 n_ForceWriteIfReadOnly = 0 l_AllowMultiConfig = .T. + l_AutoClearProcessedFiles = .T. && Por defecto limpia archivos procesados entre ejecución y ejecución l_CancelWithEscKey = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. @@ -659,9 +661,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION l_ClearUniqueID = .T. l_ClearDBFLastUpdate = .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_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_StdOutHabilitado = .T. l_Main_CFG_Loaded = .F. n_ExtraBackupLevels = 1 @@ -669,24 +671,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_CFG_Actual = 0 n_ID = 0 n_FileHandle = 0 - n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext - n_ProcessedFilesCount = 0 && Contador genérico de procesados + n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext + n_ProcessedFilesCount = 0 && Contador genérico de procesados o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL o_FSO = NULL - o_FNC = NULL && Filename_caps object + 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 + 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 @@ -849,6 +851,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION PROCEDURE ClearProcessedFiles + *-- Limpia las estadísticas de archivos procesados que se usan para optimizar + *-- el procesamiento y evitar el reproceso de los mismos archivos, por ejemplo, + *-- de un mismo VCX compartido por 2 ó más proyectos. WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' .n_ProcessedFilesCount = 0 .n_ProcessedFiles = 0 @@ -2030,6 +2035,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION lnPCount = 0 lcInputFile_Type = '' + IF .l_AutoClearProcessedFiles THEN + .ClearProcessedFiles() && Para evitar acumular procesos anteriores + ENDIF + *-- Funciona y lee los parámetros, pero no le veo un caso de uso claro, ya que si se eligen *-- varios directorios de proyecto, la compilación será errónea. 12/12/2014 *.ReadInputVFPParams( @laParams, @lnPCount ) From d371fccccb4963a77ff54d2042dc51adeb0b3b93 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 14:21:26 +0100 Subject: [PATCH 34/37] - Actualizado del log interno --- foxbin2prg.prg | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e7730f2..f16ee9c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -143,7 +143,12 @@ * 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX -* 10/03/2015 FDBOZZO v1.19.42 Mejora: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte de errOut e implementado en writeErrorLog +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte total de comodines *? en nombres de archivo para procesar múltiples archivos de la misma extensión +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nuevo parámetro para permitir un CFG alternativo (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nuevo método API get_Target() para obtener información de los archivos procesados (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nueva salida de archivos procesados a stdOut (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Bug Fix: Arreglada la cancelación del procesamiento con tecla Esc * * *--------------------------------------------------------------------------------------------------- @@ -213,7 +218,9 @@ * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir proceso multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Cambiar clase de base de FoxBin2Prg de custom a session (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) -* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir configurar un CFG alternativo (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Crear un método API get_Target() para obtener información de los archivos procesados (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir salida de archivos procesados a stdOut (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- From 7c7b505e49a8c507faceabf401a8ed9d79db5904 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 15:09:47 +0100 Subject: [PATCH 35/37] =?UTF-8?q?-=20Actualizaci=C3=B3n=20del=20archivo=20?= =?UTF-8?q?de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 83bb08b..2c3c5d5 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -31,6 +31,12 @@ Change History ------------------------------------------------------------- - Feature: Allow processing all project files without converting the PJX/2 (Lutz Scheffler) - Bug Fix pjx/pj2: If end of line (CR+LF) is used on pjx's "Build" properties data, generated pj2 is malformed - Feature: Default foxbin2prg.cfg configuration file renamed to foxbin2prg.cfg.txt to no overwrite user cfg (Lutz Scheffler) +- Added DOS errOut output support and implemented in writeErrorLog when logging errors +- Feature: Added full support for *? file masks for multi-processing files of the same extension +- Feature: Added new parameter to allow alternative main CFG (Lutz Scheffler) +- Feature: Added new get_Target() API method for obtaining information about processed files (Lutz Scheffler) +- Feature: Added new file processing output to DOS stdOut (Lutz Scheffler) +- Bug Fix: Fixed processing cancelation with Esc key 2015/01/18 v1.19.41 - Bug Fix db2: Erroneous detection of Invalid Table when size is less than 328 bytes. Lower limit was changed to 65 bytes. From c0ee98d43488cccf7d2efddab110f6f216a4b47f Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 15:10:20 +0100 Subject: [PATCH 36/37] - EXE --- foxbin2prg.exe | Bin 523625 -> 523625 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index c2fc92665c8ece10bfb8a5949a6c241d1394c558..683313d61321a6be403e738f7ece463ae75c6b33 100644 GIT binary patch delta 7369 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 From c7c5b8e9eae0eaaf58a3844752fb1a3ed860dee3 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 15:34:41 +0100 Subject: [PATCH 37/37] =?UTF-8?q?-=20Arreglo=20de=20la=20evaulaci=C3=B3n?= =?UTF-8?q?=20de=20m=C3=A1scara=20de=20nombre=20de=20archivo=20para=20get?= =?UTF-8?q?=5FTarget()=20-=20Quitado=20mensajes=20de=20compilaci=C3=B3n=20?= =?UTF-8?q?con=20SET=20NOTIFY=20OFF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 523625 -> 523644 bytes foxbin2prg.prg | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index c2fc92665c8ece10bfb8a5949a6c241d1394c558..7799c2a621b5904d0c6b44f9203875c9683ea397 100644 GIT binary patch delta 14797 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index f16ee9c..afb2c53 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -721,6 +721,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION SET TABLEPROMPT OFF SET POINT TO '.' SET SEPARATOR TO ',' + SET NOTIFY OFF tcCancelWithEscKey = EVL(tcCancelWithEscKey, '') IF NOT EMPTY(tcCancelWithEscKey) @@ -892,7 +893,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION tcFileMask = EVL(tcFileMask, '*') FOR I = 1 TO .n_ProcessedFiles - IF LIKE( tcFileMask, .a_ProcessedFiles(I,1) ) THEN + IF LIKE( tcFileMask, JUSTFNAME(.a_ProcessedFiles(I,1)) ) THEN lnCount = lnCount + 1 DIMENSION taTargets(lnCount,5) taTargets(lnCount,1) = .a_ProcessedFiles(I,1) @@ -4173,6 +4174,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION SET TABLEPROMPT OFF SET BLOCKSIZE TO 0 SET EXACT ON + SET NOTIFY OFF IF NOT EMPTY( ON("ESCAPE") ) THEN SET ESCAPE ON ENDIF