diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 34015fd..3aa8270 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -77,7 +77,7 @@
* 26/02/2014 FDBOZZO v1.19.13 Arreglo bug TimeStamp en archivo cfg / ExtraBackupLevels se puede desactivar / Optimizaciones / Casos FoxUnit
* 01/03/2014 FDBOZZO v1.19.14 Arreglo bug regresion cuando no se define ExtraBackupLevels no hace backups / Optimización carga cfg en batch
* 04/03/2014 FDBOZZO v1.19.15 Arreglo bugs: OLE TX2 legacy / NoTimestamp=0 / DBFs backlink
-* 07/03/2014 FDBOZZO v1.19.16
+* 07/03/2014 FDBOZZO v1.19.16 Arreglo bugs: Propiedades y métodos Hidden/Protected que no se generan /// Crash métodos vacíos
*
*
*---------------------------------------------------------------------------------------------------
@@ -97,7 +97,7 @@
* 20/02/2014 Ryan Harris PROPUESTA DE MEJORA v1.19.11: Centralizar los ZOrder de los controles en metadata de cabecera de la clase para minimizar diferencias
* 23/02/2014 Ryan Harris BUG cfg v1.19.12: Si se define NoTimestamp en FoxBin2Prg.cfg, se toma el valor opuesto (solucionado en v1.19.13)
* 27/02/2014 BUG REGRESION v1.19.13: Si no se define ExtraBackupLevels no se generan backups (solucionado en v1.19.14)
-* 06/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.15: Algunas propiedades no mantienen su visibilidad Hidden/Protected
+* 06/03/2014 Ryan Harris REPORTE BUG vcx/scx v1.19.15: Algunas propiedades no mantienen su visibilidad Hidden/Protected // Orden de properties defTop,defLeft,etc
*
*
*---------------------------------------------------------------------------------------------------
@@ -129,123 +129,127 @@
LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile, tcNoTimestamps
*-- NO modificar! / Do NOT change!
-#DEFINE C_CMT_I '*--'
-#DEFINE C_CMT_F '--*'
-#DEFINE C_CLASSDATA_I '*< CLASSDATA:'
-#DEFINE C_CLASSDATA_F '/>'
-#DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I)
-#DEFINE C_OBJECTDATA_I '*< OBJECTDATA:'
-#DEFINE C_OBJECTDATA_F '/>'
-#DEFINE C_LEN_OBJECTDATA_I LEN(C_OBJECTDATA_I)
-#DEFINE C_OLE_I '*< OLE:'
-#DEFINE C_OLE_F '/>'
-#DEFINE C_LEN_OLE_I LEN(C_OLE_I)
-#DEFINE C_DEFINED_PAM_I '*'
-#DEFINE C_DEFINED_PAM_F '*'
-#DEFINE C_LEN_DEFINED_PAM_I LEN(C_DEFINED_PAM_I)
-#DEFINE C_LEN_DEFINED_PAM_F LEN(C_DEFINED_PAM_F)
-#DEFINE C_END_OBJECT_I '*< END OBJECT:'
-#DEFINE C_END_OBJECT_F '/>'
-#DEFINE C_LEN_END_OBJECT_I LEN(C_END_OBJECT_I)
-#DEFINE C_FB2PRG_META_I '*< FOXBIN2PRG:'
-#DEFINE C_FB2PRG_META_F '/>'
-#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
-#DEFINE C_ENDDEFINE 'ENDDEFINE'
-#DEFINE C_TEXT 'TEXT'
-#DEFINE C_ENDTEXT 'ENDTEXT'
-#DEFINE C_PROCEDURE 'PROCEDURE'
-#DEFINE C_ENDPROC 'ENDPROC'
-#DEFINE C_WITH 'WITH'
-#DEFINE C_ENDWITH 'ENDWITH'
-#DEFINE C_SRV_HEAD_I '*'
-#DEFINE C_SRV_HEAD_F '*'
-#DEFINE C_SRV_DATA_I '*'
-#DEFINE C_SRV_DATA_F '*'
-#DEFINE C_DEVINFO_I '*'
-#DEFINE C_DEVINFO_F '*'
-#DEFINE C_BUILDPROJ_I '*'
-#DEFINE C_BUILDPROJ_F '*'
-#DEFINE C_PROJPROPS_I '*'
-#DEFINE C_PROJPROPS_F '*'
-#DEFINE C_FILE_META_I '*< FileMetadata:'
-#DEFINE C_FILE_META_F '/>'
-#DEFINE C_FILE_CMTS_I '*'
-#DEFINE C_FILE_CMTS_F '*'
-#DEFINE C_FILE_EXCL_I '*'
-#DEFINE C_FILE_EXCL_F '*'
-#DEFINE C_FILE_TXT_I '*'
-#DEFINE C_FILE_TXT_F '*'
-#DEFINE C_FB2P_VALUE_I ''
-#DEFINE C_FB2P_VALUE_F ''
-#DEFINE C_LEN_FB2P_VALUE_I LEN(C_FB2P_VALUE_I)
-#DEFINE C_LEN_FB2P_VALUE_F LEN(C_FB2P_VALUE_F)
-#DEFINE C_VFPDATA_I ''
-#DEFINE C_VFPDATA_F ''
-#DEFINE C_MEMBERDATA_I C_VFPDATA_I
-#DEFINE C_MEMBERDATA_F C_VFPDATA_F
-#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I)
-#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F)
-#DEFINE C_DATA_I ''
-#DEFINE C_TAG_REPORTE 'Reportes'
-#DEFINE C_TAG_REPORTE_I '<' + C_TAG_REPORTE + '>'
-#DEFINE C_TAG_REPORTE_F '' + C_TAG_REPORTE + '>'
-#DEFINE C_DBF_HEAD_I ''
-#DEFINE C_LEN_DBF_HEAD_I LEN(C_DBF_HEAD_I)
-#DEFINE C_LEN_DBF_HEAD_F LEN(C_DBF_HEAD_F)
-#DEFINE C_CDX_I ''
-#DEFINE C_CDX_F ''
-#DEFINE C_LEN_CDX_I LEN(C_CDX_I)
-#DEFINE C_LEN_CDX_F LEN(C_CDX_F)
-#DEFINE C_LEN_INDEX_I LEN(C_INDEX_I)
-#DEFINE C_LEN_INDEX_F LEN(C_INDEX_F)
-#DEFINE C_DATABASE_I ''
-#DEFINE C_DATABASE_F ''
-#DEFINE C_STORED_PROC_I ''
-#DEFINE C_TABLE_I '
'
-#DEFINE C_TABLES_I ''
-#DEFINE C_TABLES_F ''
-#DEFINE C_VIEW_I ''
-#DEFINE C_VIEW_F ''
-#DEFINE C_VIEWS_I ''
-#DEFINE C_VIEWS_F ''
-#DEFINE C_FIELD_I ''
-#DEFINE C_FIELD_F ''
-#DEFINE C_FIELDS_I ''
-#DEFINE C_FIELDS_F ''
-#DEFINE C_CONNECTION_I ''
-#DEFINE C_CONNECTION_F ''
-#DEFINE C_CONNECTIONS_I ''
-#DEFINE C_CONNECTIONS_F ''
-#DEFINE C_RELATION_I ''
-#DEFINE C_RELATION_F ''
-#DEFINE C_RELATIONS_I ''
-#DEFINE C_RELATIONS_F ''
-#DEFINE C_INDEX_I ''
-#DEFINE C_INDEX_F ''
-#DEFINE C_INDEXES_I ''
-#DEFINE C_INDEXES_F ''
-#DEFINE C_PROC_CODE_I '*'
-#DEFINE C_PROC_CODE_F '*'
-#DEFINE C_SETUPCODE_I '*'
-#DEFINE C_SETUPCODE_F '*'
-#DEFINE C_CLEANUPCODE_I '*'
-#DEFINE C_CLEANUPCODE_F '*'
-#DEFINE C_MENUCODE_I '*'
-#DEFINE C_MENUCODE_F '*'
-#DEFINE C_MENUTYPE_I '*'
-#DEFINE C_MENUTYPE_F ''
-#DEFINE C_MENULOCATION_I '*'
-#DEFINE C_MENULOCATION_F ''
+#DEFINE C_CMT_I '*--'
+#DEFINE C_CMT_F '--*'
+#DEFINE C_CLASSCOMMENTS_I '*'
+#DEFINE C_CLASSCOMMENTS_F '*'
+#DEFINE C_LEN_CLASSCOMMENTS_I LEN(C_CLASSCOMMENTS_I)
+#DEFINE C_LEN_CLASSCOMMENTS_F LEN(C_CLASSCOMMENTS_F)
+#DEFINE C_CLASSDATA_I '*< CLASSDATA:'
+#DEFINE C_CLASSDATA_F '/>'
+#DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I)
+#DEFINE C_OBJECTDATA_I '*< OBJECTDATA:'
+#DEFINE C_OBJECTDATA_F '/>'
+#DEFINE C_LEN_OBJECTDATA_I LEN(C_OBJECTDATA_I)
+#DEFINE C_OLE_I '*< OLE:'
+#DEFINE C_OLE_F '/>'
+#DEFINE C_LEN_OLE_I LEN(C_OLE_I)
+#DEFINE C_DEFINED_PAM_I '*'
+#DEFINE C_DEFINED_PAM_F '*'
+#DEFINE C_LEN_DEFINED_PAM_I LEN(C_DEFINED_PAM_I)
+#DEFINE C_LEN_DEFINED_PAM_F LEN(C_DEFINED_PAM_F)
+#DEFINE C_END_OBJECT_I '*< END OBJECT:'
+#DEFINE C_END_OBJECT_F '/>'
+#DEFINE C_LEN_END_OBJECT_I LEN(C_END_OBJECT_I)
+#DEFINE C_FB2PRG_META_I '*< FOXBIN2PRG:'
+#DEFINE C_FB2PRG_META_F '/>'
+#DEFINE C_DEFINE_CLASS 'DEFINE CLASS'
+#DEFINE C_ENDDEFINE 'ENDDEFINE'
+#DEFINE C_TEXT 'TEXT'
+#DEFINE C_ENDTEXT 'ENDTEXT'
+#DEFINE C_PROCEDURE 'PROCEDURE'
+#DEFINE C_ENDPROC 'ENDPROC'
+#DEFINE C_WITH 'WITH'
+#DEFINE C_ENDWITH 'ENDWITH'
+#DEFINE C_SRV_HEAD_I '*'
+#DEFINE C_SRV_HEAD_F '*'
+#DEFINE C_SRV_DATA_I '*'
+#DEFINE C_SRV_DATA_F '*'
+#DEFINE C_DEVINFO_I '*'
+#DEFINE C_DEVINFO_F '*'
+#DEFINE C_BUILDPROJ_I '*'
+#DEFINE C_BUILDPROJ_F '*'
+#DEFINE C_PROJPROPS_I '*'
+#DEFINE C_PROJPROPS_F '*'
+#DEFINE C_FILE_META_I '*< FileMetadata:'
+#DEFINE C_FILE_META_F '/>'
+#DEFINE C_FILE_CMTS_I '*'
+#DEFINE C_FILE_CMTS_F '*'
+#DEFINE C_FILE_EXCL_I '*'
+#DEFINE C_FILE_EXCL_F '*'
+#DEFINE C_FILE_TXT_I '*'
+#DEFINE C_FILE_TXT_F '*'
+#DEFINE C_FB2P_VALUE_I ''
+#DEFINE C_FB2P_VALUE_F ''
+#DEFINE C_LEN_FB2P_VALUE_I LEN(C_FB2P_VALUE_I)
+#DEFINE C_LEN_FB2P_VALUE_F LEN(C_FB2P_VALUE_F)
+#DEFINE C_VFPDATA_I ''
+#DEFINE C_VFPDATA_F ''
+#DEFINE C_MEMBERDATA_I C_VFPDATA_I
+#DEFINE C_MEMBERDATA_F C_VFPDATA_F
+#DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I)
+#DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F)
+#DEFINE C_DATA_I ''
+#DEFINE C_TAG_REPORTE 'Reportes'
+#DEFINE C_TAG_REPORTE_I '<' + C_TAG_REPORTE + '>'
+#DEFINE C_TAG_REPORTE_F '' + C_TAG_REPORTE + '>'
+#DEFINE C_DBF_HEAD_I ''
+#DEFINE C_LEN_DBF_HEAD_I LEN(C_DBF_HEAD_I)
+#DEFINE C_LEN_DBF_HEAD_F LEN(C_DBF_HEAD_F)
+#DEFINE C_CDX_I ''
+#DEFINE C_CDX_F ''
+#DEFINE C_LEN_CDX_I LEN(C_CDX_I)
+#DEFINE C_LEN_CDX_F LEN(C_CDX_F)
+#DEFINE C_LEN_INDEX_I LEN(C_INDEX_I)
+#DEFINE C_LEN_INDEX_F LEN(C_INDEX_F)
+#DEFINE C_DATABASE_I ''
+#DEFINE C_DATABASE_F ''
+#DEFINE C_STORED_PROC_I ''
+#DEFINE C_TABLE_I ''
+#DEFINE C_TABLES_I ''
+#DEFINE C_TABLES_F ''
+#DEFINE C_VIEW_I ''
+#DEFINE C_VIEW_F ''
+#DEFINE C_VIEWS_I ''
+#DEFINE C_VIEWS_F ''
+#DEFINE C_FIELD_I ''
+#DEFINE C_FIELD_F ''
+#DEFINE C_FIELDS_I ''
+#DEFINE C_FIELDS_F ''
+#DEFINE C_CONNECTION_I ''
+#DEFINE C_CONNECTION_F ''
+#DEFINE C_CONNECTIONS_I ''
+#DEFINE C_CONNECTIONS_F ''
+#DEFINE C_RELATION_I ''
+#DEFINE C_RELATION_F ''
+#DEFINE C_RELATIONS_I ''
+#DEFINE C_RELATIONS_F ''
+#DEFINE C_INDEX_I ''
+#DEFINE C_INDEX_F ''
+#DEFINE C_INDEXES_I ''
+#DEFINE C_INDEXES_F ''
+#DEFINE C_PROC_CODE_I '*'
+#DEFINE C_PROC_CODE_F '*'
+#DEFINE C_SETUPCODE_I '*'
+#DEFINE C_SETUPCODE_F '*'
+#DEFINE C_CLEANUPCODE_I '*'
+#DEFINE C_CLEANUPCODE_F '*'
+#DEFINE C_MENUCODE_I '*'
+#DEFINE C_MENUCODE_F '*'
+#DEFINE C_MENUTYPE_I '*'
+#DEFINE C_MENUTYPE_F ''
+#DEFINE C_MENULOCATION_I '*'
+#DEFINE C_MENULOCATION_F ''
*--
-#DEFINE C_TAB CHR(9)
-#DEFINE C_CR CHR(13)
-#DEFINE C_LF CHR(10)
-#DEFINE CR_LF C_CR + C_LF
-#DEFINE C_MPROPHEADER REPLICATE( CHR(1), 517 )
+#DEFINE C_TAB CHR(9)
+#DEFINE C_CR CHR(13)
+#DEFINE C_LF CHR(10)
+#DEFINE CR_LF C_CR + C_LF
+#DEFINE C_MPROPHEADER REPLICATE( CHR(1), 517 )
*-- Fin / End
*-- From FOXPRO.H
@@ -2314,6 +2318,14 @@ DEFINE CLASS c_conversor_base AS SESSION
lcPropName = 'A040' + lcPropName
CASE lcPropName == 'Tag'
lcPropName = 'A045' + lcPropName
+ CASE lcPropName == 'DefTop' && Propied con evaluación: Debe estar antes que Top
+ lcPropName = 'A046' + lcPropName
+ CASE lcPropName == 'DefLeft' && Propied con evaluación: Debe estar antes que Left
+ lcPropName = 'A047' + lcPropName
+ CASE lcPropName == 'DefHeight' && Propied con evaluación: Debe estar antes que Height
+ lcPropName = 'A048' + lcPropName
+ CASE lcPropName == 'DefWidth' && Propied con evaluación: Debe estar antes que Width
+ lcPropName = 'A049' + lcPropName
CASE lcPropName == 'Top'
lcPropName = 'A050' + lcPropName
CASE lcPropName == 'Left'
@@ -2701,6 +2713,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -4121,6 +4134,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
, llCLASSMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed, llOBJECTMETADATA_Completed ;
+ , llCLASSCOMMENTS_Completed ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
STORE '' TO tcProcedureAbierto
@@ -4147,7 +4161,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF
* Búsqueda del ID de fin de bloque (ENDDEFINE)
- WITH THIS
+ WITH THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG'
FOR I = toClase._Ini_Cab TO tnCodeLines
tc_Comentario = ''
.set_Line( @tcLine, @taCodeLines, I )
@@ -4159,13 +4173,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @loObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ;
, @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
*-- OJO: Esta se analiza primero a propósito, solo porque no puede estar detrás de PROTECTED y HIDDEN
- llCLASS_PROPERTY_Completed = .T.
- llPROTECTED_Completed = .T.
- llHIDDEN_Completed = .T.
- llINCLUDE_Completed = .T.
- llCLASSMETADATA_Completed = .T.
- llOBJECTMETADATA_Completed = .T.
- llDEFINED_PAM_Completed = .T.
+ STORE .T. TO llCLASSCOMMENTS_Completed ;
+ , llCLASS_PROPERTY_Completed ;
+ , llPROTECTED_Completed ;
+ , llHIDDEN_Completed ;
+ , llINCLUDE_Completed ;
+ , llCLASSMETADATA_Completed ;
+ , llOBJECTMETADATA_Completed ;
+ , llDEFINED_PAM_Completed
CASE NOT llPROTECTED_Completed AND .analizarBloque_PROTECTED( @toClase, @tcLine )
@@ -4181,12 +4196,16 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llINCLUDE_Completed = .T.
+ CASE NOT llCLASSCOMMENTS_Completed AND .analizarBloque_CLASSCOMMENTS( @toClase, @tcLine ,@taCodeLines, tnCodeLines, @I )
+ llCLASSCOMMENTS_Completed = .T.
+
+
CASE NOT llCLASSMETADATA_Completed AND .analizarBloque_CLASSMETADATA( @toClase, @tcLine )
llCLASSMETADATA_Completed = .T.
CASE NOT llOBJECTMETADATA_Completed AND .analizarBloque_OBJECTMETADATA( @toClase, @tcLine )
- *llOBJECTMETADATA_Completed = .T.
+ * No se usa flag porque puede haber múltiples ObjectMetadata.
CASE NOT llDEFINED_PAM_Completed AND .analizarBloque_DEFINED_PAM( @toClase, @tcLine, @taCodeLines, tnCodeLines, @I )
@@ -4194,13 +4213,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE .analizarBloque_ADD_OBJECT( @toModulo, @toClase, @tcLine, @I, @taCodeLines, @tnCodeLines )
- llCLASS_PROPERTY_Completed = .T.
- llPROTECTED_Completed = .T.
- llHIDDEN_Completed = .T.
- llINCLUDE_Completed = .T.
- llCLASSMETADATA_Completed = .T.
- llOBJECTMETADATA_Completed = .T.
- llDEFINED_PAM_Completed = .T.
+ STORE .T. TO llCLASSCOMMENTS_Completed ;
+ , llCLASS_PROPERTY_Completed ;
+ , llPROTECTED_Completed ;
+ , llHIDDEN_Completed ;
+ , llINCLUDE_Completed ;
+ , llCLASSMETADATA_Completed ;
+ , llOBJECTMETADATA_Completed ;
+ , llDEFINED_PAM_Completed
CASE .analizarBloque_ENDDEFINE( @toClase, @tcLine, @I, @tcProcedureAbierto )
@@ -4333,7 +4353,57 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDPROC
- *******************************************************************************************************************
+ PROCEDURE analizarBloque_CLASSCOMMENTS
+ LPARAMETERS toClase, tcLine ,taCodeLines, tnCodeLines, I
+
+ EXTERNAL ARRAY taCodeLines
+
+ #IF .F.
+ LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
+ #ENDIF
+
+ TRY
+ LOCAL llBloqueEncontrado
+
+ IF LEFT( tcLine, C_LEN_CLASSCOMMENTS_I ) == C_CLASSCOMMENTS_I
+ llBloqueEncontrado = .T.
+ toClase._Comentario = ''
+
+ WITH THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG'
+ FOR I = I + 1 TO tnCodeLines
+ .set_Line( @tcLine, @taCodeLines, I )
+
+ DO CASE
+ CASE LEFT( tcLine, C_LEN_CLASSCOMMENTS_F ) == C_CLASSCOMMENTS_F
+ I = I + 1
+ EXIT
+
+ OTHERWISE
+ toClase._Comentario = toClase._Comentario + CR_LF + SUBSTR( tcLine, 2 ) && Le quito el '*' inicial
+ ENDCASE
+ ENDFOR
+ ENDWITH && THIS
+
+ I = I - 1
+
+ IF NOT EMPTY(toClase._Comentario)
+ toClase._Comentario = SUBSTR( toClase._Comentario, 3 ) && Quito el primer CR+LF
+ ENDIF
+ ENDIF
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ ENDTRY
+
+ RETURN llBloqueEncontrado
+ ENDPROC
+
+
PROCEDURE analizarBloque_CLASSMETADATA
LPARAMETERS toClase, tcLine
@@ -7106,6 +7176,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
EXTERNAL ARRAY taPropsAndComments, taProtected
TRY
+ LOCAL lcMethodName
+
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
.SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ;
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count )
@@ -7115,25 +7187,29 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*-- o si son de la clase.
IF tnMethodCount > 0 THEN
FOR I = 1 TO tnMethodCount
+ IF taMethods(I,2) = 0
+ LOOP
+ ENDIF
+
IF EMPTY(toRegObj.PARENT)
- tcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
+ lcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
ELSE
DO CASE
CASE '.' $ toRegObj.PARENT
- tcMethodName = SUBSTR(toRegObj.PARENT, AT('.', toRegObj.PARENT) + 1) + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1)
+ lcMethodName = SUBSTR(toRegObj.PARENT, AT('.', toRegObj.PARENT) + 1) + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1)
CASE LEFT(toRegObj.PARENT + '.', LEN( toRegClass.OBJNAME + '.' ) ) == toRegClass.OBJNAME + '.'
- tcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
+ lcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
OTHERWISE
- tcMethodName = toRegObj.PARENT + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1)
+ lcMethodName = toRegObj.PARENT + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1)
ENDCASE
ENDIF
*-- Genero el método SIN indentar, ya que se hace luego
*-- Sustituyo el TEXT/ENDTEXT aquí porque a veces quita espacios de la derecha, y eso es peligroso
- tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + tcMethodName
+ tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + lcMethodName
tcMethods = tcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) )
tcMethods = tcMethods + CR_LF + 'ENDPROC'
ENDFOR
@@ -7393,7 +7469,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
X = 0
FOR I = lnFin TO 1 STEP -1
IF NOT EMPTY(laLineas(I)) && Última línea de código
- IF LEFT( laLineas(I), 10 ) <> C_ENDPROC
+ IF llProcedure AND LEFT( laLineas(I), 10 ) <> C_ENDPROC
*ERROR 'Procedimiento sin cerrar. La última línea de código debe ser ENDPROC. [' + laLineas(1) + ']'
ERROR (TEXTMERGE(C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC))
ENDIF
@@ -8026,9 +8102,18 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
LPARAMETERS toRegClass
*-- Comentario de la clase
IF NOT EMPTY(toRegClass.RESERVED7) THEN
- TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
- <<>> <<'&'+'&'>> <>
- ENDTEXT
+ *-- Si es multilínea, debe ir en un tag aparte
+ IF OCCURS( CHR(13), toRegClass.RESERVED7 ) > 0 THEN
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <<>> <>
+ <>
+ <<>> <>
+ ENDTEXT
+ ELSE && Comentario in-line
+ TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
+ <<>> <<'&'+'&'>> <>
+ ENDTEXT
+ ENDIF
ENDIF
ENDPROC