Changeset: 383 fdbozzo - 29/07/2014 18:33:26:

This commit is contained in:
fdbozzo
2014-07-29 18:33:36 +02:00
6 changed files with 94 additions and 17 deletions

View File

@@ -159,7 +159,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
*******************************************************************************************************************************************
FUNCTION Deberia_NoEncontrarNingunBloque_TEXT_ENDTEXT_CuandoUnaLineaQueComienzaConUnCampoLlamado_Text_esEvaluado
FUNCTION Deberia_NoEncontrarBloque_TEXT_ENDTEXT_CuandoEvaluaUnaLineaQueComienzaConUnCampoLlamado_Text_YLineaAnteriorTerminaEn_PuntoYComa
LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2)
LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG"
loObj = THIS.icObj
@@ -174,7 +174,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
*-- Code Block
IF !FOUND()
APPEND BLANK
REPLACE CURSOR WITH "cawlmain", START WITH 1, END WITH 999999, isnumeric WITH .F., lastused WITH "", ; && Worst case for next line
REPLACE CURSOR WITH "cawlmain", START WITH 1, END WITH 999999, isnumeric WITH .F., lastused WITH "", ; && Worst case for next line with a field called "text"
TEXT WITH "W<>rmeobjekte", standard WITH .T.
ENDIF
@@ -187,7 +187,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
Empfaenger C(2),;
Rohdatum C(8),;
RohZeit C(4),;
LFDNr C(4),; && Worst case for next line
LFDNr C(4),; && Worst case for next line with a field called "text"
Text C(26),;
Trenner C(2),;
DATUM D NULL,;
@@ -204,7 +204,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
lfdnr c(30) NULL DEFAULT .NULL.,;
linkkey int,;
email CHAR(60) NULL DEFAULT .NULL.,;
subject VARCHAR(254) NULL DEFAULT .NULL.,; && Worst case for next line
subject VARCHAR(254) NULL DEFAULT .NULL.,; && Worst case for next line with a field called "text"
TEXT m NULL DEFAULT .NULL.,;
docname c(50) NULL DEFAULT .NULL.,;
versenden l NOT NULL DEFAULT .F.,;
@@ -235,4 +235,57 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_base__IdentificarBloquesDeExclusion as
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_NoEncontrarBloque_TEXT_ENDTEXT_CuandoEvaluaUnaLineaQueComienzaConUnCampoLlamado_Text_YLineaAnteriorTerminaEn_Coma
LOCAL lcMethod, laLineas(1), lnLineas, laPos(1,2), lnPos_Count, laExpected_Pos(1,2)
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) = 4
laExpected_Pos(1,2) = 15
TEXT TO lcMethod NOSHOW TEXTMERGE FLAGS 1 PRETEXT 1+2+4
<<C_PROC>> myMethod_B
*-- Code Block
IF ODBC_Query.odbc
<<C_TEXT>> TO cSQL NOSHOW
update menuitems
set parent_menuitem_id = ?iParent_menuitem_id, && Worst case for next line with a field called "text"
text = ?strText,
command = ?strCommand,
message = ?strMessage,
keyname = ?strKeyname,
keylabel = ?strKeylabel,
skipfor = ?strSkipfor,
sequence = ?iSequence
where menuitem_id = ?iMenuitem_id
<<C_ENDTEXT>>
ODBC_Query(cSQL)
ELSE
update menuitems;
set parent_menuitem_id = iParent_menuitem_id,; && Worst case for next line with a field called "text"
text = strText,;
command = strCommand,;
message = strMessage,;
keyname = strKeyname,;
keylabel = strKeylabel,;
skipfor = strSkipfor,;
sequence = iSequence;
where menuitem_id == iMenuitem_id
ENDIF
<<C_ENDPROC>>
ENDTEXT
lnLineas = ALINES( laLineas, lcMethod )
*-- Test
loObj.identificarBloquesDeExclusion( @laLineas, lnLineas, , @laPos, @lnPos_Count )
THIS.Evaluate_results( @laExpected_Pos, @laPos, lnPos_Count )
ENDFUNC
ENDDEFINE

Binary file not shown.

View File

@@ -23,10 +23,10 @@ _CompanyName = "Fernando D. Bozzo"
_FileDescription = "Conversor bidireccional de binarios FoxPro 9 (scx,vcx,pjx) a texto para sustituir al scctext :-)"
_LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
_LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
_ProductName = " FOXBIN2PRG v1.19.28"
_ProductName = " FOXBIN2PRG v1.19.29"
_MajorVer = "1"
_MinorVer = "19"
_Revision = "28"
_Revision = "29"
_LanguageID = "1034"
_AutoIncrement = "0"
*</DevInfo>

Binary file not shown.

Binary file not shown.

View File

@@ -95,6 +95,7 @@
* 06/07/2014 FDBOZZO v1.19.26 Bug Fix cfg: ExtraBackupLevel no se tiene en cuenta cuando se usa multi-configuraci<63>n
* 02/06/2014 DH/FDBOZZO v1.19.27 Mejora: Agregado soporte para exportar datos para DIFF (no para importar)
* 21/07/2014 FDBOZZO v1.19.28 Mejora: Agregada funcionalidad para filtrado de tablas y datos cuando se elige DBF_Conversion_Support:4 (Edyshor)
* 29/07/2014 FDBOZZO v1.19.29 Arreglo bug vcx/scx: Un campo de tabla llamado "text" que comienza la l<>nea puede confundirse con la estructura TEXT/ENDTEXT y reconocer mal el resto del c<>digo
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
*
*---------------------------------------------------------------------------------------------------
@@ -133,6 +134,7 @@
* 27/06/2014 Daniel S<>nchez MEJORA v1.19.25: Si el campo memo "methods" de los vcx/scx contiene asteriscos fuera de lugar (que no deber<65>a), FoxBin2Prg falla. Deber<65>a poder procesarlo igual.
* 02/06/2014 Doug Hennig MEJORA v1.19.22: Agregada funcionalidad para exportar los datos de las tablas al archivo db2 (Agregado en v1.19.27)
* 21/07/2014 Edyshor PROPUESTA DE MEJORA db2 v1.19.27: Ser<65>a <20>til poder filtrar tablas y datos cuando se elige DBF_Conversion_Support:4 (Agregado en v1.19.28)
* 29/07/2014 M_N_M REPORTE BUG vcx/scx v1.19.28: Los campos de tabla con nombre "text" a veces provocan corrupci<63>n del binario generado (Arreglado en v1.19.29)
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
*
*---------------------------------------------------------------------------------------------------
@@ -3585,6 +3587,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
+ [<memberdata name="createproject_recordheader" display="createProject_RecordHeader"/>] ;
+ [<memberdata name="createreport" display="createReport"/>] ;
+ [<memberdata name="createmenu" display="createMenu"/>] ;
+ [<memberdata name="currentlineispreviouslinecontinuation" display="currentLineIsPreviousLineContinuation"/>] ;
+ [<memberdata name="defined_pam2memo" display="defined_PAM2Memo"/>] ;
+ [<memberdata name="eltextoevaluadoeseltokenindicado" display="elTextoEvaluadoEsElTokenIndicado"/>] ;
+ [<memberdata name="emptyrecord" display="emptyRecord"/>] ;
@@ -3754,6 +3757,24 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
RETURN llEncontrado
ENDPROC
PROCEDURE currentLineIsPreviousLineContinuation
LPARAMETERS taCodeLines, I
LOCAL lcPrevLine, llIsContinuation
*-- Analizo la l<>nea anterior para saber si termina con ";" o "," y la actual es continuaci<63>n
IF I > 1
lcPrevLine = taCodeLines(I-1)
ELSE
lcPrevLine = ''
ENDIF
.get_SeparatedLineAndComment( @lcPrevLine )
IF INLIST( RIGHT( lcPrevLine,1 ), ';', ',' ) && Esta l<>nea es continuaci<63>n de la anterior
llIsContinuation = .T.
ENDIF
RETURN llIsContinuation
ENDPROC
PROCEDURE identificarBloquesDeExclusion
@@ -3799,7 +3820,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
FOR X = 1 TO lnID_Bloques_Count
lnLen_IDFinBQ = LEN( ta_ID_Bloques(X,2) )
IF .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 1 )
IF .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 1 ) ;
AND NOT THIS.currentLineIsPreviousLineContinuation( @taCodeLines, I )
lnPrimerID = X
lnAnidamientos = 1
EXIT
@@ -3807,14 +3829,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDFOR
IF lnPrimerID > 0 && Se ha identificado un ID de bloque excluyente
IF I > 1
*-- Analizo la l<>nea anterior para saber si termina con ";" y la actual es continuaci<63>n
lcPrevLine = taCodeLines(I-1)
.get_SeparatedLineAndComment( @lcPrevLine )
IF RIGHT( lcPrevLine,1 ) = ';' && Esta l<>nea es continuaci<63>n de la anterior
LOOP
ENDIF
ENDIF
*IF I > 1
* *-- Analizo la l<>nea anterior para saber si termina con ";" o "," y la actual es continuaci<63>n
* lcPrevLine = taCodeLines(I-1)
* .get_SeparatedLineAndComment( @lcPrevLine )
* IF INLIST( RIGHT( lcPrevLine,1 ), ';', ',' ) && Esta l<>nea es continuaci<63>n de la anterior
* LOOP
* ENDIF
*ENDIF
tnBloquesExclusion = tnBloquesExclusion + 1
lnLen_IDFinBQ = LEN( ta_ID_Bloques(lnPrimerID,2) )
@@ -3831,10 +3853,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF
DO CASE
CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 1 )
CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 1 ) ;
AND NOT THIS.currentLineIsPreviousLineContinuation( @taCodeLines, I )
lnAnidamientos = lnAnidamientos + 1
CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 2 )
CASE .elTextoEvaluadoEsElTokenIndicado( @lcLine, @ta_ID_Bloques, lnLen_IDFinBQ, X, 2 ) ;
AND NOT THIS.currentLineIsPreviousLineContinuation( @taCodeLines, I )
lnAnidamientos = lnAnidamientos - 1
IF lnAnidamientos = 0