Changeset: 192 fdbozzo - 07/03/2014 18:58:44:
- Arreglo bug vcx/scx: Al regenerar binario con procedimiento vacío hace que se cuelgue FoxPro al intentar modificar
This commit is contained in:
@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
|
|||||||
_ProductName = " FOXBIN2PRG"
|
_ProductName = " FOXBIN2PRG"
|
||||||
_MajorVer = "1"
|
_MajorVer = "1"
|
||||||
_MinorVer = "19"
|
_MinorVer = "19"
|
||||||
_Revision = " 288"
|
_Revision = " 291"
|
||||||
_LanguageID = "1034"
|
_LanguageID = "1034"
|
||||||
_AutoIncrement = "1"
|
_AutoIncrement = "1"
|
||||||
*</DevInfo>
|
*</DevInfo>
|
||||||
@@ -50,8 +50,8 @@ MODIFY PROJECT 'foxbin2prg.pjx' NOWAIT NOSHOW NOPROJECTHOOK
|
|||||||
loProject = _VFP.Projects('foxbin2prg.pjx')
|
loProject = _VFP.Projects('foxbin2prg.pjx')
|
||||||
|
|
||||||
WITH loProject.FILES
|
WITH loProject.FILES
|
||||||
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" 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="1147452450" ID="0" ObjRev="544" />
|
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" />
|
||||||
*</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.
@@ -3440,6 +3440,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
loProcedure = NULL
|
loProcedure = NULL
|
||||||
loProcedure = toClase._Procedures(I)
|
loProcedure = toClase._Procedures(I)
|
||||||
|
|
||||||
|
IF loProcedure._ProcLine_Count > 0 THEN
|
||||||
IF '.' $ loProcedure._Nombre
|
IF '.' $ loProcedure._Nombre
|
||||||
*-- cboNombre.InteractiveChange ==> No debe acortarse por ser m<>todo modificado de combobox heredado de la clase
|
*-- cboNombre.InteractiveChange ==> No debe acortarse por ser m<>todo modificado de combobox heredado de la clase
|
||||||
*-- cntDatos.txtEdad.Valid ==> Debe acortarse si cntDatos es un objeto existente
|
*-- cntDatos.txtEdad.Valid ==> Debe acortarse si cntDatos es un objeto existente
|
||||||
@@ -3471,6 +3472,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
|||||||
<<C_ENDPROC>>
|
<<C_ENDPROC>>
|
||||||
<<>>
|
<<>>
|
||||||
ENDTEXT
|
ENDTEXT
|
||||||
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
loProcedure = NULL
|
loProcedure = NULL
|
||||||
@@ -7490,11 +7492,12 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE SortMethod
|
PROCEDURE SortMethod
|
||||||
LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount
|
LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ;
|
||||||
|
, taProtected, tnProtected_Count
|
||||||
*-- 29/10/2013 Fernando D. Bozzo
|
*-- 29/10/2013 Fernando D. Bozzo
|
||||||
*-- Se tiene en cuenta la posibilidad de que haya un PROC/ENDPROC dentro de un TEXT/ENDTEXT
|
*-- 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.
|
*-- cuando es usado en un generador de c<>digo o similar.
|
||||||
EXTERNAL ARRAY taMethods, taCode
|
EXTERNAL ARRAY taMethods, taCode, taPropsAndComments, taProtected
|
||||||
|
|
||||||
*-- ESTRUCTURA DE LOS ARRAYS CREADOS:
|
*-- ESTRUCTURA DE LOS ARRAYS CREADOS:
|
||||||
*-- taMethods[1,3]
|
*-- taMethods[1,3]
|
||||||
@@ -7504,7 +7507,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
|
LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod
|
||||||
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
|
||||||
@@ -7593,13 +7596,40 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDCASE
|
ENDCASE
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
|
*-- Agrego los m<>todos definidos, pero sin c<>digo (Protected/Reserved3)
|
||||||
|
FOR I = 1 TO tnPropsAndComments_Count
|
||||||
|
lcMethod = CHRTRAN( taPropsAndComments(I,1), '*', '' )
|
||||||
|
IF LEFT( taPropsAndComments(I,1), 1 ) == '*' AND ASCAN( taMethods, lcMethod, 1, 0, 1, 1+2+4+8 ) = 0
|
||||||
|
tnMethodCount = tnMethodCount + 1
|
||||||
|
DIMENSION taMethods(tnMethodCount, 3) &&, taCode(tnMethodCount)
|
||||||
|
taMethods(tnMethodCount, 1) = lcMethod
|
||||||
|
taMethods(tnMethodCount, 2) = 0
|
||||||
|
|
||||||
|
lnProtectedLine = ASCAN( taProtected, lcMethod, 1, 0, 1, 1+2+4+8 )
|
||||||
|
|
||||||
|
IF lnProtectedLine = 0 THEN
|
||||||
|
lnProtectedLine = ASCAN( taProtected, lcMethod + '^', 1, 0, 1, 1+2+4+8 )
|
||||||
|
|
||||||
|
IF lnProtectedLine = 0 THEN
|
||||||
|
taMethods(tnMethodCount, 3) = ''
|
||||||
|
ELSE
|
||||||
|
taMethods(tnMethodCount, 3) = 'HIDDEN '
|
||||||
|
ENDIF
|
||||||
|
ELSE
|
||||||
|
taMethods(tnMethodCount, 3) = 'PROTECTED '
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
|
||||||
*-- Alphabetical ordering of methods
|
*-- Alphabetical ordering of methods
|
||||||
IF THIS.l_MethodSort_Enabled
|
IF THIS.l_MethodSort_Enabled
|
||||||
ASORT(taMethods,1,-1,0,1)
|
ASORT(taMethods,1,-1,0,1)
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
FOR I = 1 TO tnMethodCount
|
FOR I = 1 TO tnMethodCount
|
||||||
|
IF taMethods(I,2) > 0 THEN
|
||||||
m.tcSorted = m.tcSorted + taCode(taMethods(I,2))
|
m.tcSorted = m.tcSorted + taCode(taMethods(I,2))
|
||||||
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -7770,7 +7800,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*-- C<>digo del m<>todo
|
*-- C<>digo del m<>todo
|
||||||
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
|
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
|
||||||
|
IF taMethods(I,2) > 0 THEN
|
||||||
lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
|
lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
|
||||||
|
ENDIF
|
||||||
|
|
||||||
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
|
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
|
||||||
lcMethods = lcMethods + CR_LF
|
lcMethods = lcMethods + CR_LF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
@@ -7794,26 +7827,28 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
PROCEDURE write_CLASS_PROPERTIES
|
PROCEDURE write_CLASS_PROPERTIES
|
||||||
LPARAMETERS toRegClass, taPropsAndValues, taPropsAndComments, taProtected
|
LPARAMETERS toRegClass, taPropsAndValues, taPropsAndComments, taProtected ;
|
||||||
|
, tnPropsAndValues_Count, tnPropsAndComments_Count, tnProtected_Count
|
||||||
|
|
||||||
EXTERNAL ARRAY taPropsAndValues, taPropsAndComments
|
EXTERNAL ARRAY taPropsAndValues, taPropsAndComments
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL lnPropsAndValues_Count, lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd, lnPropsAndComments_Count, I ;
|
LOCAL lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd, I ;
|
||||||
, lcPropName, lnProtectedItem, lcComentarios, lnProtected_Count
|
, lcPropName, lnProtectedItem, lcComentarios
|
||||||
|
|
||||||
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
||||||
*-- DEFINIR PROPIEDADES ( HIDDEN, PROTECTED, *DEFINED_PAM )
|
*-- DEFINIR PROPIEDADES ( HIDDEN, PROTECTED, *DEFINED_PAM )
|
||||||
DIMENSION taProtected(1)
|
DIMENSION taProtected(1)
|
||||||
STORE '' TO lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd
|
STORE '' TO lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd
|
||||||
.get_PropsAndValuesFrom_PROPERTIES( toRegClass.PROPERTIES, 1, @taPropsAndValues, @lnPropsAndValues_Count, '' )
|
STORE 0 TO tnPropsAndValues_Count, tnPropsAndComments_Count, tnProtected_Count
|
||||||
.get_PropsAndCommentsFrom_RESERVED3( toRegClass.RESERVED3, .T., @taPropsAndComments, @lnPropsAndComments_Count, '' )
|
.get_PropsAndValuesFrom_PROPERTIES( toRegClass.PROPERTIES, 1, @taPropsAndValues, @tnPropsAndValues_Count, '' )
|
||||||
.get_PropsFrom_PROTECTED( toRegClass.PROTECTED, .T., @taProtected, @lnProtected_Count, '' )
|
.get_PropsAndCommentsFrom_RESERVED3( toRegClass.RESERVED3, .T., @taPropsAndComments, @tnPropsAndComments_Count, '' )
|
||||||
|
.get_PropsFrom_PROTECTED( toRegClass.PROTECTED, .T., @taProtected, @tnProtected_Count, '' )
|
||||||
|
|
||||||
IF lnPropsAndValues_Count > 0 THEN
|
IF tnPropsAndValues_Count > 0 THEN
|
||||||
*-- Recorro las propiedades (campo Properties) para ir conformando
|
*-- Recorro las propiedades (campo Properties) para ir conformando
|
||||||
*-- las definiciones HIDDEN y PROTECTED
|
*-- las definiciones HIDDEN y PROTECTED
|
||||||
FOR I = 1 TO lnPropsAndValues_Count
|
FOR I = 1 TO tnPropsAndValues_Count
|
||||||
IF EMPTY(taPropsAndValues(I,1))
|
IF EMPTY(taPropsAndValues(I,1))
|
||||||
LOOP
|
LOOP
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -7836,7 +7871,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
*-- Segunda barrida para las propiedades Hidden/Protected que no est<73>n definidas en Properties
|
*-- Segunda barrida para las propiedades Hidden/Protected que no est<73>n definidas en Properties
|
||||||
FOR I = 1 TO lnProtected_Count
|
FOR I = 1 TO tnProtected_Count
|
||||||
*-- La propiedad evaluada no debe ser vac<61>a, debe estar en la lista de PROPERTIES y no debe ser un *M<>todo
|
*-- La propiedad evaluada no debe ser vac<61>a, debe estar en la lista de PROPERTIES y no debe ser un *M<>todo
|
||||||
IF EMPTY(taProtected(I,1)) ;
|
IF EMPTY(taProtected(I,1)) ;
|
||||||
OR ASCAN(taPropsAndValues, CHRTRAN( taProtected(I), '^', '' ), 1, 0, 1, 1) > 0 ;
|
OR ASCAN(taPropsAndValues, CHRTRAN( taProtected(I), '^', '' ), 1, 0, 1, 1) > 0 ;
|
||||||
@@ -7855,7 +7890,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
.write_DEFINED_PAM( @taPropsAndComments, lnPropsAndComments_Count )
|
.write_DEFINED_PAM( @taPropsAndComments, tnPropsAndComments_Count )
|
||||||
|
|
||||||
.write_HIDDEN_Properties( @lcHiddenProp )
|
.write_HIDDEN_Properties( @lcHiddenProp )
|
||||||
|
|
||||||
@@ -8599,8 +8634,8 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
TRY
|
TRY
|
||||||
LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ;
|
LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ;
|
||||||
, laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ;
|
, laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ;
|
||||||
, laObjs(1,3), I
|
, laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count
|
||||||
STORE 0 TO lnCodError, lnLastClass, lnObjCount
|
STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count
|
||||||
STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1), laObjs(1)
|
STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1), laObjs(1)
|
||||||
STORE NULL TO loRegClass, loRegObj
|
STORE NULL TO loRegClass, loRegObj
|
||||||
|
|
||||||
@@ -8691,7 +8726,8 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
.write_INCLUDE( @loRegClass )
|
.write_INCLUDE( @loRegClass )
|
||||||
|
|
||||||
.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected )
|
.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ;
|
||||||
|
, @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count )
|
||||||
|
|
||||||
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico (del SCAN original)
|
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico (del SCAN original)
|
||||||
|
|
||||||
@@ -8702,8 +8738,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
*-- OBTENGO LOS M<>TODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
|
*-- OBTENGO LOS M<>TODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
|
||||||
DIMENSION laMethods(1,3)
|
DIMENSION laMethods(1,3)
|
||||||
lcMethods = ''
|
laMethods = ''
|
||||||
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount )
|
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
||||||
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
||||||
|
|
||||||
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
||||||
|
|
||||||
@@ -8800,8 +8837,8 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
TRY
|
TRY
|
||||||
LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ;
|
LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ;
|
||||||
, laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ;
|
, laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) ;
|
||||||
, laObjs(1,3), I
|
, laObjs(1,3), I, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count
|
||||||
STORE 0 TO lnCodError, lnLastClass, lnObjCount
|
STORE 0 TO lnCodError, lnLastClass, lnObjCount, lnPropsAndValues_Count, lnPropsAndComments_Count, lnProtected_Count
|
||||||
STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1)
|
STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1)
|
||||||
STORE NULL TO loRegClass, loRegObj
|
STORE NULL TO loRegClass, loRegObj
|
||||||
|
|
||||||
@@ -8908,7 +8945,8 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
.write_INCLUDE( @loRegClass )
|
.write_INCLUDE( @loRegClass )
|
||||||
|
|
||||||
.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected )
|
.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected ;
|
||||||
|
, @lnPropsAndValues_Count, @lnPropsAndComments_Count, @lnProtected_Count )
|
||||||
|
|
||||||
|
|
||||||
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico de objetos (del SCAN original)
|
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico de objetos (del SCAN original)
|
||||||
@@ -8920,8 +8958,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
*-- OBTENGO LOS M<>TODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
|
*-- OBTENGO LOS M<>TODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO
|
||||||
DIMENSION laMethods(1,3)
|
DIMENSION laMethods(1,3)
|
||||||
lcMethods = ''
|
laMethods = ''
|
||||||
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount )
|
.SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ;
|
||||||
|
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
|
||||||
|
|
||||||
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments )
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user