Changeset: 383 fdbozzo - 29/07/2014 18:33:26:
This commit is contained in:
@@ -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
|
||||
|
||||
BIN
foxbin2prg.exe
BIN
foxbin2prg.exe
Binary file not shown.
@@ -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>
|
||||
|
||||
BIN
foxbin2prg.pjt
BIN
foxbin2prg.pjt
Binary file not shown.
BIN
foxbin2prg.pjx
BIN
foxbin2prg.pjx
Binary file not shown.
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user