diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index f0a2c18..06b6ce1 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -2,8 +2,8 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo - .VersionNumber = 'v1.19.31' - .VersionDate = Date(2014,08,22) + .VersionNumber = 'v1.19.32' + .VersionDate = Date(2014,08,26) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,6 +17,9 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- +2014/08/26 v1.19.32 +- If exists a property called "text" it is confused with a text/endtext structure (ph42) + 2014/08/22 v1.19.31 - Trash cleanup code on binary methods, normally added by tools like ReFox and others - Added EXE version number when generating a debug LOG file diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg index df7d0bd..8d47e20 100644 --- a/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg +++ b/TESTS/ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion.prg @@ -343,6 +343,51 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_NoEncontrarBloque_TEXT_ENDTEXT_CuandoExisteUnaPropiedadLlamada_Text + LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2) ; + , laLineasExclusion(19), laLineasExclusion_Esperadas(19) + 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) = 0 + laExpected_Pos(1,2) = 0 + + TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2 + DEFINE CLASS test AS custom + *< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" /> + * + *m: text_access + *m: text_assign + *p: text && Returns all of the text in a text-entry area of a control. + * + + text = PRETEXT + + PROCEDURE text_access + RETURN THIS.text + ENDPROC + + PROCEDURE text_assign + LPARAMETERS vNewVal + THIS.text = m.vNewVal + ENDPROC + ENDDEFINE + 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_EncontrarBloque_TEXT_ENDTEXT_CuandoEvaluaUnaLineaQueTerminaConUn_EndText_YLineaAnteriorTerminaEn_Coma LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2) ; diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 8971d93..a88bccc 100644 Binary files a/foxbin2prg.exe and b/foxbin2prg.exe differ diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 216211b..8e3003a 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): _ProductName = " FOXBIN2PRG v1.19.31" _MajorVer = "1" _MinorVer = "19" -_Revision = "31" +_Revision = "32" _LanguageID = "1034" _AutoIncrement = "0" * diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index ce11c67..3475a95 100644 Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 759fefe..073eb96 100644 Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 6e8870e..b9da2e8 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -101,6 +101,7 @@ * 17/08/2014 FDBOZZO v1.19.31 Agregada versión del EXE cuando se genera LOG de depuración * 20/08/2014 FDBOZZO v1.19.31 Mejora vcx/scx: Mejorado el reconocimiento de instrucciones #IF..#ENDIF cuando hay espacios entre # y el nombre de función * 20/08/2014 FDBOZZO v1.19.31 Mejora: Ajuste de capitalización de los archivos origen, así ya no hay que hacerlo manualmente +* 25/08/2014 FDBOZZO v1.19.32 Arreglo bug vcx/vct v1.19.31: Una propiedad llamada "text" es confundida con la estructura text/endtext (ph42) * * *--------------------------------------------------------------------------------------------------- @@ -142,6 +143,7 @@ * 29/07/2014 M_N_M REPORTE BUG vcx/scx v1.19.28: Los campos de tabla con nombre "text" a veces provocan corrupción del binario generado (Arreglado en v1.19.29) * 07/08/2014 Jim Nelson REPORTE BUG vcx/scx v1.19.29: Cuando la línea anterior a un ENDTEXT termina en ";" o "," no se reconoce como ENDTEXT sino como continuación (Arreglado en v1.19.30) * 08/08/2014 Ryan Harris REPORTE BUG vcx/vct v1.19.29: En ciertos casos de herencia no se mantiene el orden alfabetico de algunos metodos (solucionado en v1.19.30) +* 25/08/2014 ph42 REPORTE BUG bug vcx/vct v1.19.31: Una propiedad llamada "text" es confundida con la estructura text/endtext (solucionado en v1.19.32) * * *--------------------------------------------------------------------------------------------------- @@ -2252,7 +2254,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM .RenameFile( FORCEEXT(.c_InputFile,'MNT'), lcEXE_CAPS, loFSO ) ENDCASE - + ELSE *-- Normalizar archivo(s) de salida. El primero siempre se normaliza (??2, ??X, DBF, DBC) .RenameFile( .c_OutputFile, lcEXE_CAPS, loFSO ) @@ -2754,24 +2756,33 @@ DEFINE CLASS c_conversor_base AS SESSION IF LEFT(lcLine,1) == '#' lcLine = CHRTRAN( lcLine, ' ', '' ) && Quito los espacios a lo que comience con # ENDIF - + IF tnIniFin = 1 *-- TOKENS DE INICIO - IF UPPER( LEFT( tcLine, LEN(ta_ID_Bloques(X,1)) ) ) == ta_ID_Bloques(X,1) + IF UPPER( LEFT( lcLine, LEN(ta_ID_Bloques(X,1)) ) ) == ta_ID_Bloques(X,1) *-- Evaluar casos especiales - lcWord = UPPER( ALLTRIM(GETWORDNUM(tcLine,1) ) ) + lcWord = UPPER( ALLTRIM(GETWORDNUM(lcLine,1) ) ) - IF ta_ID_Bloques(X,1) == 'TEXT' AND NOT lcWord == 'TEXT' - EXIT + IF ta_ID_Bloques(X,1) == 'TEXT' THEN + lcLine = UPPER( lcLine ) + ' ' + + DO CASE + CASE NOT lcWord == 'TEXT' + EXIT + + CASE UPPER( LEFT( CHRTRAN( lcLine, ' ', '' ), 5 ) ) == 'TEXT=' + EXIT + + ENDCASE ENDIF llEncontrado = .T. ENDIF ELSE *-- TOKENS DE FIN - IF LEFT( UPPER( tcLine ), tnLen_IDFinBQ ) == ta_ID_Bloques(X,2) && Fin de bloque encontrado (#ENDI, ENDTEXT, etc) + IF LEFT( UPPER( lcLine ), tnLen_IDFinBQ ) == ta_ID_Bloques(X,2) && Fin de bloque encontrado (#ENDI, ENDTEXT, etc) *-- Evaluar casos especiales - lcWord = UPPER( ALLTRIM(GETWORDNUM(tcLine,1) ) ) + lcWord = UPPER( ALLTRIM(GETWORDNUM(lcLine,1) ) ) IF ta_ID_Bloques(X,2) == 'ENDT' AND NOT lcWord == LEFT( 'ENDTEXT', LEN(lcWord) ) EXIT @@ -8862,7 +8873,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF IF NOT EMPTY(m.tcMethod) - DIMENSION laLine(1) + DIMENSION laLine(1) STORE '' TO laLine STORE 0 TO lnTextNodes @@ -8997,7 +9008,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) &&+ CR_LF llProcOpen = .F. - *CASE tnMethodCount = 0 OR NOT llProcOpen AND LEFT( LTRIM(laLine(I)),1 ) = '*' + *CASE tnMethodCount = 0 OR NOT llProcOpen AND LEFT( LTRIM(laLine(I)),1 ) = '*' CASE tnMethodCount = 0 OR NOT llProcOpen *-- Skip empty and commented lines before methods begin *-- Aquí como condición podría poner: NOT llProcOpen AND LEFT(laLine(I), 7) # 'ENDPROC', pero abarcaría demasiado.