diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 666ad2e..d9164fd 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -167,7 +167,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
lFileMode = .F.
nClassTimeStamp = ''
o_Conversor = NULL
- n_FB2PRG_Version = 1.0
+ n_FB2PRG_Version = 1.2
*******************************************************************************************************************
PROCEDURE INIT
@@ -940,9 +940,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
#ENDIF
_MEMBERDATA = [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1199,7 +1199,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
- PROCEDURE classPropertyComment
+ PROCEDURE getClassPropertyComment
LPARAMETERS tcPropName AS STRING, toClase
#IF .F.
@@ -1221,7 +1221,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
- PROCEDURE classMethodComment
+ PROCEDURE getClassMethodComment
LPARAMETERS tcMethodName AS STRING, toClase
#IF .F.
@@ -1263,10 +1263,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
IF LEFT( lcPEM, 1 ) == '*'
*-- Método
- lcComentario = THIS.classMethodComment( SUBSTR(lcPEM,2), toClase )
+ lcComentario = THIS.getClassMethodComment( SUBSTR(lcPEM,2), toClase )
ELSE
*-- Propiedad
- lcComentario = THIS.classPropertyComment( lcPEM, toClase )
+ lcComentario = THIS.getClassPropertyComment( lcPEM, toClase )
ENDIF
TEXT TO lcMemo ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
@@ -1429,7 +1429,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
STORE '' TO lc_Comentario, lcProp, lcAddobjectAbierto
STORE 0 TO lnPropsObj
- IF THIS.lineaExcluida( I, lnBloquesExclusion, @ta_Pos_BloquesExclusion )
+ lcLine = LTRIM( ta_Lineas(I), 0, ' ', CHR(9) )
+
+ IF THIS.lineaExcluida( I, lnBloquesExclusion, @ta_Pos_BloquesExclusion ) ;
+ OR .lineIsOnlyComment( @lcLine, @lc_Comentario ) && Excluida, vacía o solo Comentarios
+
IF NOT EMPTY(lcProcedureAbierto) && Líneas del PROCEDURE (de Clase u Objeto)
IF '.' $ lcProcedureAbierto AND loObjeto._Procedure_Count > 0
.evaluarLineaDeProcedure( @lcLine, ta_Lineas(I), loObjeto._Procedures(loObjeto._Procedure_Count), @lcProcedureAbierto )
@@ -1441,12 +1445,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
LOOP
ENDIF
- lcLine = LTRIM( ta_Lineas(I), 0, ' ', CHR(9) )
-
- IF .lineIsOnlyComment( @lcLine, @lc_Comentario ) && Vacía o solo Comentarios
- LOOP
- ENDIF
-
lnPrimerID = 0
DO CASE
@@ -1521,11 +1519,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
lc_Comentario = ''
lcLine = LTRIM( ta_Lineas(I), 0, ' ', CHR(9) )
- IF THIS.lineaExcluida( I, lnBloquesExclusion, @ta_Pos_BloquesExclusion )
- LOOP
- ENDIF
-
- IF .lineIsOnlyComment( @lcLine, @lc_Comentario ) && Excluida, vacía o solo Comentarios
+ IF THIS.lineaExcluida( I, lnBloquesExclusion, @ta_Pos_BloquesExclusion ) ;
+ OR .lineIsOnlyComment( @lcLine, @lc_Comentario ) && Excluida, vacía o solo Comentarios
IF NOT EMPTY(lcProcedureAbierto) && Líneas del PROCEDURE
IF '.' $ lcProcName AND VARTYPE(loObjeto) = 'O' AND loObjeto._Procedure_Count > 0
@@ -3102,7 +3097,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
SET ORDER TO 0 IN TABLABIN
- THIS.PROGRAM_HEADER()
+ THIS.write_PROGRAM_HEADER()
THIS.obtenerNombresObjetosOLEPublic( @la_NombresObjsOle )
@@ -3133,7 +3128,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
THIS.INCLUDES( @loRegClass )
- THIS.CLASS_PROPERTIES( @loRegClass, @laProps, @laPropsWithComments )
+ THIS.CLASS_PROPERTIES( @loRegClass, @laProps, @laPropsWithComments, @laProtected )
*-------------------------------------------------------------------------------
@@ -3240,7 +3235,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
SET ORDER TO 0 IN TABLABIN
- THIS.PROGRAM_HEADER()
+ THIS.write_PROGRAM_HEADER()
THIS.obtenerNombresObjetosOLEPublic( @la_NombresObjsOle )
@@ -3285,7 +3280,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
THIS.INCLUDES( @loRegClass )
- THIS.CLASS_PROPERTIES( @loRegClass, @laProps, @laPropsWithComments )
+ THIS.CLASS_PROPERTIES( @loRegClass, @laProps, @laPropsWithComments, @laProtected )
*-------------------------------------------------------------------------------
@@ -3360,8 +3355,8 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG'
#ENDIF
*_MEMBERDATA = [] ;
- + [] ;
- + []
+ * + [] ;
+ * + []
*******************************************************************************************************************
PROCEDURE INIT
@@ -3375,6 +3370,20 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
ENDPROC
+ *******************************************************************************************************************
+ PROCEDURE write_PROGRAM_HEADER
+ *-- Cabecera del PRG e inicio de DEF_CLASS
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ *--------------------------------------------------------------------------------------------------------------------------------------------------------
+ * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO.
+ * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT.
+ *--------------------------------------------------------------------------------------------------------------------------------------------------------
+ <> Version = "<>", SourceFile = "<>" <>
+ *
+ ENDTEXT
+ ENDPROC
+
+
*******************************************************************************************************************
PROCEDURE Convertir
TRY
@@ -3435,15 +3444,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
ENDSCAN
- *-- Cabecera del PRG e inicio de DEF_CLASS
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- *--------------------------------------------------------------------------------------------------------------------------------------------------------
- * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO.
- * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT.
- *--------------------------------------------------------------------------------------------------------------------------------------------------------
- <> Version = "<>", SourceFile = "<>" <>
- *
- ENDTEXT
+ THIS.write_PROGRAM_HEADER()
*-- Directorio de inicio
@@ -3652,7 +3653,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
+ [] ;
+ [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -3896,14 +3897,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*******************************************************************************************************************
- PROCEDURE PROGRAM_HEADER
+ PROCEDURE write_PROGRAM_HEADER
*-- Cabecera del PRG e inicio de DEF_CLASS
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!!
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
- <> Version = "<>", SourceFile = "<>" <>
+ <> Version = "<>", SourceFile = "<>" <>
*
ENDTEXT
ENDPROC
@@ -3911,26 +3912,27 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*******************************************************************************************************************
PROCEDURE CLASS_PROPERTIES
- LPARAMETERS toRegClass, taProps, taPropsWithComments
+ LPARAMETERS toRegClass, taProps, taPropsWithComments, taProtected
EXTERNAL ARRAY taProps, taPropsWithComments
TRY
LOCAL lnLineCount, lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd, lnComments, I ;
- , laProtected(1), lcPropName, lnProtectedItem, lcComentarios
+ , lcPropName, lnProtectedItem, lcComentarios
WITH THIS
*-- DEFINIR PROPIEDADES ( HIDDEN, PROTECTED, *DEFINED_PEM )
+ DIMENSION taProtected(1)
THIS.SortNames( toRegClass.PROPERTIES, @taProps, @lnLineCount, '' )
STORE '' TO lcHiddenProp, lcProtectedProp, lcPropsMethodsDefd
THIS.Get_PropsWithComments( @taPropsWithComments, @lnComments, toRegClass.RESERVED3 )
- =ALINES(laProtected, toRegClass.PROTECTED)
+ =ALINES(taProtected, toRegClass.PROTECTED)
IF lnLineCount > 0 THEN
*-- Recorro las propiedades (campo Properties)
FOR I = 1 TO lnLineCount
lcPropName = RTRIM( GETWORDNUM( taProps(I), 1, '=' ) )
- lnProtectedItem = ASCAN(laProtected, lcPropName, 1, 0, 0, 0)
+ lnProtectedItem = ASCAN(taProtected, lcPropName, 1, 0, 0, 0)
*-- Ajustes de algunos casos especiales
taProps(I) = THIS.normalizarAsignacion( taProps(I), @lcComentarios )
@@ -3944,11 +3946,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
CASE lnProtectedItem = 0
*-- Propiedad común
- CASE laProtected(lnProtectedItem) == lcPropName
+ CASE taProtected(lnProtectedItem) == lcPropName
*-- Propiedad protegida
lcProtectedProp = lcProtectedProp + ',' + lcPropName
- CASE laProtected(lnProtectedItem) == lcPropName + '^'
+ CASE taProtected(lnProtectedItem) == lcPropName + '^'
*-- Propiedad oculta
lcHiddenProp = lcHiddenProp + ',' + lcPropName