Changeset: 238 fdbozzo - 13/05/2014 23:05:03:
- La detección incorrecta de PROCEDURE/ENDPROC/TEXT/ENDTEXT puede causar pérdida de algunos métodos en determinadas circunstancias (Andres Mendoza)
This commit is contained in:
@@ -26,7 +26,7 @@ _LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa):
|
|||||||
_ProductName = " FOXBIN2PRG v1.19.22"
|
_ProductName = " FOXBIN2PRG v1.19.22"
|
||||||
_MajorVer = "1"
|
_MajorVer = "1"
|
||||||
_MinorVer = "19"
|
_MinorVer = "19"
|
||||||
_Revision = " 321"
|
_Revision = " 325"
|
||||||
_LanguageID = "1034"
|
_LanguageID = "1034"
|
||||||
_AutoIncrement = "1"
|
_AutoIncrement = "1"
|
||||||
*</DevInfo>
|
*</DevInfo>
|
||||||
@@ -52,6 +52,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx')
|
|||||||
WITH loProject.FILES
|
WITH loProject.FILES
|
||||||
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
|
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
|
||||||
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
||||||
|
.ADD('props_all.txt') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" />
|
||||||
*</BuildProj>
|
*</BuildProj>
|
||||||
|
|
||||||
.ITEM('__newproject.f2b').Remove()
|
.ITEM('__newproject.f2b').Remove()
|
||||||
|
|||||||
BIN
foxbin2prg.pjt
BIN
foxbin2prg.pjt
Binary file not shown.
BIN
foxbin2prg.pjx
BIN
foxbin2prg.pjx
Binary file not shown.
@@ -2706,7 +2706,7 @@ DEFINE CLASS c_conversor_base AS SESSION
|
|||||||
|
|
||||||
PROCEDURE SortSpecialProps
|
PROCEDURE SortSpecialProps
|
||||||
TRY
|
TRY
|
||||||
LOCAL I, loEx as Exception, lcPropsFile
|
LOCAL I, loEx AS EXCEPTION, lcPropsFile
|
||||||
lcPropsFile = ''
|
lcPropsFile = ''
|
||||||
|
|
||||||
WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG"
|
WITH THIS AS conversor_base OF "FOXBIN2PRG.PRG"
|
||||||
@@ -2860,7 +2860,7 @@ DEFINE CLASS c_conversor_base AS SESSION
|
|||||||
ENDWITH
|
ENDWITH
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
loEx.UserValue = 'lcPropsFile = ' + lcPropsFile
|
loEx.USERVALUE = 'lcPropsFile = ' + lcPropsFile
|
||||||
|
|
||||||
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
||||||
SET STEP ON
|
SET STEP ON
|
||||||
@@ -7840,7 +7840,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
*-- taCode[1]
|
*-- taCode[1]
|
||||||
*-- Bloque de c<>digo del m<>todo en su posici<63>n original
|
*-- Bloque de c<>digo del m<>todo en su posici<63>n original
|
||||||
TRY
|
TRY
|
||||||
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod
|
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine
|
||||||
LOCAL loEx AS EXCEPTION
|
LOCAL loEx AS EXCEPTION
|
||||||
DIMENSION taMethods(1,3)
|
DIMENSION taMethods(1,3)
|
||||||
STORE '' TO taMethods, m.tcSorted, taCode
|
STORE '' TO taMethods, m.tcSorted, taCode
|
||||||
@@ -7885,16 +7885,39 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*-- Analyze and count line methods, get method names and consolidate block code
|
*-- Analyze and count line methods, get method names and consolidate block code
|
||||||
FOR I = 1 TO lnLineCount
|
FOR I = 1 TO lnLineCount
|
||||||
|
lnLine_Len = LEN( laLine(I) )
|
||||||
|
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE LEFT(laLine(I), 4) == C_TEXT
|
CASE UPPER( LEFT(laLine(I), 4) ) == "TEXT"
|
||||||
|
lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' '
|
||||||
|
IF lnLine_Len >= 4 AND LEFT(lcLine,5) == 'TEXT '
|
||||||
|
*-- Es el comando TEXT
|
||||||
|
ELSE
|
||||||
|
*-- Es otra cosa (variable, etc)
|
||||||
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
LOOP
|
||||||
|
ENDIF
|
||||||
|
|
||||||
lnTextNodes = lnTextNodes + 1
|
lnTextNodes = lnTextNodes + 1
|
||||||
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE LEFT(laLine(I), 7) == C_ENDTEXT
|
CASE UPPER( LEFT(laLine(I), 4) ) == "ENDT"
|
||||||
|
lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' '
|
||||||
|
IF lnLine_Len >= 7 AND LEFT(lcLine,8) == 'ENDTEXT ' ;
|
||||||
|
OR lnLine_Len >= 6 AND LEFT(lcLine,7) == 'ENDTEX ' ;
|
||||||
|
OR lnLine_Len >= 5 AND LEFT(lcLine,6) == 'ENDTE ' ;
|
||||||
|
OR lnLine_Len >= 4 AND LEFT(lcLine,5) == 'ENDT '
|
||||||
|
*-- Es el comando ENDTEXT
|
||||||
|
ELSE
|
||||||
|
*-- Es otra cosa (variable, etc)
|
||||||
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
LOOP
|
||||||
|
ENDIF
|
||||||
|
|
||||||
lnTextNodes = lnTextNodes - 1
|
lnTextNodes = lnTextNodes - 1
|
||||||
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND LEFT(laLine(I), 10) == 'PROCEDURE '
|
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 10) ) == 'PROCEDURE '
|
||||||
tnMethodCount = tnMethodCount + 1
|
tnMethodCount = tnMethodCount + 1
|
||||||
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
||||||
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 11) )
|
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 11) )
|
||||||
@@ -7902,7 +7925,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taMethods(tnMethodCount, 3) = ''
|
taMethods(tnMethodCount, 3) = ''
|
||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND LEFT(laLine(I), 17) == 'HIDDEN PROCEDURE '
|
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 17) ) == 'HIDDEN PROCEDURE '
|
||||||
tnMethodCount = tnMethodCount + 1
|
tnMethodCount = tnMethodCount + 1
|
||||||
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
||||||
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 18) )
|
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 18) )
|
||||||
@@ -7910,7 +7933,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taMethods(tnMethodCount, 3) = 'HIDDEN '
|
taMethods(tnMethodCount, 3) = 'HIDDEN '
|
||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND LEFT(laLine(I), 20) == 'PROTECTED PROCEDURE '
|
CASE lnTextNodes = 0 AND UPPER( LEFT(laLine(I), 20) ) == 'PROTECTED PROCEDURE '
|
||||||
tnMethodCount = tnMethodCount + 1
|
tnMethodCount = tnMethodCount + 1
|
||||||
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
DIMENSION taMethods(tnMethodCount, 3), taCode(tnMethodCount)
|
||||||
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 21) )
|
taMethods(tnMethodCount, 1) = RTRIM( SUBSTR(laLine(I), 21) )
|
||||||
@@ -7919,6 +7942,15 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
taCode(tnMethodCount) = laLine(I) + CR_LF
|
taCode(tnMethodCount) = laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE lnTextNodes = 0 AND LEFT(laLine(I), 7) == 'ENDPROC'
|
CASE lnTextNodes = 0 AND LEFT(laLine(I), 7) == 'ENDPROC'
|
||||||
|
lcLine = UPPER( CHRTRAN( laLine(I) , '&'+CHR(9)+CHR(0), ' ') ) + ' '
|
||||||
|
IF lnLine_Len >= 7 AND LEFT(lcLine,8) == 'ENDPROC '
|
||||||
|
*-- Es el final de estructura ENDPROC
|
||||||
|
ELSE
|
||||||
|
*-- Es otra cosa (variable, etc)
|
||||||
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
LOOP
|
||||||
|
ENDIF
|
||||||
|
|
||||||
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF
|
||||||
|
|
||||||
CASE tnMethodCount = 0 && Skip empty lines before methods begin
|
CASE tnMethodCount = 0 && Skip empty lines before methods begin
|
||||||
|
|||||||
Reference in New Issue
Block a user