From 965926e135b48815080c18a842b1ca48e187ae5d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 9 Aug 2014 14:39:32 +0200 Subject: [PATCH] =?UTF-8?q?Changeset:=20398=20fdbozzo=20-=2008/08/2014=201?= =?UTF-8?q?6:16:51:=20-=20Arreglo=20bug=20orden=20de=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/lib_controles.vc2 | 4 +- TESTS/ut__foxbin2prg.prg | 3 +- foxbin2prg.prg | 316 +++++++++++++++++++------ 3 files changed, 253 insertions(+), 70 deletions(-) diff --git a/TESTS/DATOS_READONLY/lib_controles.vc2 b/TESTS/DATOS_READONLY/lib_controles.vc2 index d4f4f4b..4027987 100644 --- a/TESTS/DATOS_READONLY/lib_controles.vc2 +++ b/TESTS/DATOS_READONLY/lib_controles.vc2 @@ -3486,7 +3486,7 @@ DEFINE CLASS f_combobox AS f_base OF "lib_controles.vcx" WhatsThisHelpID = -1, ; Width = 200 *< END OBJECT: BaseClass="combobox" /> - + PROCEDURE Cl_ComboDropdown1.Init this.AddListItem('Este es el valor.A1') this.AddListItem('Este es el valor.A2', this.NewItemId, 2) @@ -13870,7 +13870,7 @@ DEFINE CLASS f_listbox AS f_base OF "lib_controles.vcx" WhatsThisHelpID = -1, ; Width = 224 *< END OBJECT: BaseClass="listbox" /> - + PROCEDURE Cl_ListBox1.Init this.AddListItem('Este es el valor.A1') this.AddListItem('Este es el valor.A2', this.NewItemId, 2) diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index 81a72b7..d64e5ef 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -148,6 +148,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' ) *-- Methods + STORE 0 TO lnMethods_Count, lnMethods_Count_Esperado loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count, '', 0, '', 0, loFoxBin2Prg ) loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado, '', 0, '', 0, loFoxBin2Prg ) lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')' @@ -256,7 +257,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData ) FOR I = 1 TO lnMethods_Count_Esperado - THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; + THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 1+2+4) > 0 ; , ' Comprobación de que existe el Method "' + TRANSFORM(laMethods_Esperado(I,1)) + '"' + " para " + lcExtraData ) ENDFOR diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 176702e..4f0ab70 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -8170,12 +8170,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -8239,17 +8241,18 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base #ENDIF TRY - LOCAL lcMethodName + LOCAL lcMethodName, lnMethodCount WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' - .SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ; + lnMethodCount = tnMethodCount + .Method2Array( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ; , @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg ) *-- Ubico los métodos protegidos y les cambio la definición. *-- Los métodos se deben generar con la ruta completa, porque si no es imposible saber a que objeto corresponden, *-- o si son de la clase. - IF tnMethodCount > 0 THEN - FOR I = 1 TO tnMethodCount + IF tnMethodCount - lnMethodCount > 0 THEN + FOR I = lnMethodCount + 1 TO tnMethodCount IF taMethods(I,2) = 0 LOOP ENDIF @@ -8272,9 +8275,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- 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 ' + lcMethodName - tcMethods = tcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) - tcMethods = tcMethods + CR_LF + 'ENDPROC' + *tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + lcMethodName + *tcMethods = tcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) + *tcMethods = tcMethods + CR_LF + 'ENDPROC' + taCode(taMethods(I,2)) = 'PROCEDURE ' + lcMethodName + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) + CR_LF + 'ENDPROC' + taMethods(I,1) = lcMethodName ENDFOR ENDIF ENDWITH && THIS @@ -8291,6 +8296,93 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDPROC + ******************************************************************************************************************* + PROCEDURE get_CLASS_METHODS + LPARAMETERS tnMethodCount, taMethods, taCode, taProtected, taPropsAndComments + *-- DEFINIR MÉTODOS DE LA CLASE + *-- Ubico los métodos protegidos y les cambio la definición + EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments + + TRY + LOCAL lcMethod, lcMethodName, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods, lnLen + STORE '' TO lcMethod, lcMethodName, lcProcDef, lcMethods + + IF tnMethodCount > 0 THEN + WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' + FOR I = 1 TO tnMethodCount + lcMethodName = CHRTRAN( taMethods(I,1), '^', '' ) + lnProtectedItem = ASCAN( taProtected, taMethods(I,1), 1, 0, 0, 1+2+4) + + IF lnProtectedItem = 0 + lnProtectedItem = ASCAN( taProtected, taMethods(I,1) + '^', 1, 0, 0, 1+2+4) + + IF lnProtectedItem = 0 + *-- Método común + lcProcDef = 'PROCEDURE' + ELSE + *-- Método oculto + lcProcDef = 'HIDDEN PROCEDURE' + ENDIF + ELSE + *-- Método protegido + lcProcDef = 'PROTECTED PROCEDURE' + ENDIF + + lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethodName, 1, 0, 1, 1+2+4+8) + + *-- Nombre del método + *TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + * <<>> <> <> + *ENDTEXT + *lcMethods = lcMethods + CR_LF + lcProcDef + ' ' + taMethods(I,1) + lcMethod = lcProcDef + ' ' + taMethods(I,1) + + *-- Comentarios del método (si tiene) + IF lnCommentRow > 0 AND NOT EMPTY(taPropsAndComments(lnCommentRow,2)) + *TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + * <<>> && <> + *ENDTEXT + *lcMethods = lcMethods + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2) + lcMethod = lcMethod + C_TAB + C_TAB + '&' + '& ' + taPropsAndComments(lnCommentRow,2) + ENDIF + + *-- Código del método + IF taMethods(I,2) > 0 THEN + *lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB ) + *lcMethod = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB ) + taCode(taMethods(I,2)) = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) ) + CR_LF + 'ENDPROC' + ELSE + lnLen = ALEN(taCode,1) + 1 + DIMENSION taCode( lnLen ) + taCode( lnLen ) = lcMethod + CR_LF + 'ENDPROC' + taMethods(I,2) = lnLen + ENDIF + + *lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' + *lcMethods = lcMethods + CR_LF + + *lcMethod = lcMethod + CR_LF + C_TAB + 'ENDPROC' + *lcMethod = lcMethod + CR_LF + *lcMethods = lcMethods + lcMethod + ENDFOR + + ENDWITH && THIS + *C_FB2PRG_CODE = C_FB2PRG_CODE + C_TAB + lcMethods &&+ CR_LF + + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + ENDTRY + + RETURN + ENDPROC + + ******************************************************************************************************************* PROCEDURE get_NombresObjetosOLEPublic LPARAMETERS ta_NombresObjsOle @@ -8511,16 +8603,18 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE IndentarMemo - LPARAMETERS tcMethod, tcIndentation + LPARAMETERS tcMethod, tcIndentation, tlKeepProcHeader *-- INDENTA EL CÓDIGO DE UN MÉTODO DADO Y QUITA LA CABECERA DE MÉTODO (PROCEDURE/ENDPROC) SI LA ENCUENTRA TRY - LOCAL I, X, lcMethod, llProcedure, lnInicio, lnFin, laLineas(1) + LOCAL I, X, lcMethod, llProcedure, lnInicio, lnFin, laLineas(1), lnOffset lcMethod = '' - llProcedure = ( LEFT(tcMethod,10) == 'PROCEDURE ' ; - OR LEFT(tcMethod,17) == 'HIDDEN PROCEDURE ' ; - OR LEFT(tcMethod,20) == 'PROTECTED PROCEDURE ' ) lnInicio = 1 + lnOffset = 0 lnFin = ALINES(laLineas, tcMethod) + llProcedure = ( LEFT(laLineas(1),10) == 'PROCEDURE ' ; + OR LEFT(laLineas(1),17) == 'HIDDEN PROCEDURE ' ; + OR LEFT(laLineas(1),20) == 'PROTECTED PROCEDURE ' ) + IF VARTYPE(tcIndentation) # 'C' tcIndentation = '' ENDIF @@ -8546,15 +8640,20 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- Si encuentra la cabecera de un PROCEDURE, la saltea IF llProcedure - lnInicio = 2 - lnFin = lnFin - 1 + lnOffset = 1 ENDIF - FOR I = lnInicio TO lnFin + FOR I = lnInicio + lnOffset TO lnFin - lnOffset *-- TEXT/ENDTEXT aquí da error 2044 de recursividad. No usar. lcMethod = lcMethod + CR_LF + tcIndentation + laLineas(I) ENDFOR + IF llProcedure AND tlKeepProcHeader + laLineas(lnInicio) = C_TAB + laLineas(lnInicio) + laLineas(lnFin) = C_TAB + laLineas(lnFin) + lcMethod = CR_LF + laLineas(lnInicio) + lcMethod + CR_LF + laLineas(lnFin) + ENDIF + lcMethod = SUBSTR(lcMethod,3) && Quito el primer ENTER (CR+LF) CATCH TO loEx @@ -8632,6 +8731,75 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE SortMethod + LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ; + , taProtected, tnProtected_Count, toFoxBin2Prg + + EXTERNAL ARRAY taMethods, taCode, taPropsAndComments, taProtected + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL I, I2, laMethods(1,3), lnDeleted, lcMethodName, lnMethodPos, lcMethodType, loEx AS EXCEPTION + + IF tnMethodCount > 0 THEN + + *-- taMethods[1,3] + *-- 1.Nombre Método + *-- 2.Posición Original + *-- 3.Tipo (HIDDEN/PROTECTED/NORMAL) + + *-- Alphabetical ordering of methods + IF THIS.l_MethodSort_Enabled + ASORT(taMethods,1,-1,0,1) + ENDIF + + *FOR I = 1 TO tnMethodCount + * IF taMethods(I,2) > 0 THEN + * tcSorted = m.tcSorted + taCode( taMethods(I,2) ) + * ENDIF + *ENDFOR + + DIMENSION laMethods(tnMethodCount,3) + lnDeleted = 0 + + FOR I = tnMethodCount TO 1 STEP -1 + IF taMethods(I,2) > 0 THEN + IF '.' $ taMethods(I,1) + *-- Los métodos con '.' los mando a otro array + lnDeleted = lnDeleted + 1 + laMethods(lnDeleted,1) = taMethods(I,1) + laMethods(lnDeleted,2) = taMethods(I,2) + laMethods(lnDeleted,3) = taMethods(I,3) + ADEL( taMethods, I ) + ENDIF + ENDIF + ENDFOR + + FOR I = lnDeleted TO 1 STEP -1 + *-- Los métodos con '.' los paso al final + I2 = tnMethodCount - lnDeleted + (lnDeleted - I) + 1 + taMethods(I2,1) = laMethods(I,1) + taMethods(I2,2) = laMethods(I,2) + taMethods(I2,3) = laMethods(I,3) + ENDFOR + + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + ENDTRY + + RETURN + ENDPROC && SordMethod + + + ******************************************************************************************************************* + PROCEDURE Method2Array LPARAMETERS tcMethod, taMethods, taCode, tcSorted, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count ; , taProtected, tnProtected_Count, toFoxBin2Prg *-- 29/10/2013 Fernando D. Bozzo @@ -8653,18 +8821,20 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LOCAL lnLineCount, laLine(1), I, lnTextNodes, tcSorted, lnProtectedLine, lcMethod, lnLine_Len, lcLine, llProcOpen ; , laLineasExclusion(1), lnBloquesExclusion ; , loEx AS EXCEPTION - DIMENSION taMethods(1,3) - STORE '' TO taMethods, tcSorted, taCode - tnMethodCount = 0 + *DIMENSION taMethods(1,3) + *STORE '' TO taMethods, tcSorted, taCode + *tnMethodCount = 0 IF NOT EMPTY(m.tcMethod) AND LEFT(m.tcMethod,9) == "ENDPROC"+CHR(13)+CHR(10) tcMethod = SUBSTR(m.tcMethod,10) ENDIF IF NOT EMPTY(m.tcMethod) - DIMENSION laLine(1), taMethods(1,3) - STORE '' TO laLine, taMethods, taCode - STORE 0 TO tnMethodCount, lnTextNodes + DIMENSION laLine(1) &&, taMethods(1,3) + STORE '' TO laLine + STORE 0 TO lnTextNodes + *STORE '' TO taMethods, taCode + *STORE 0 TO tnMethodCount lnLineCount = ALINES(laLine, m.tcMethod) && NO aplicar nungún formato ni limpieza, que es el CÓDIGO FUENTE @@ -8749,7 +8919,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LOOP ENDIF - taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) + CR_LF + taCode(tnMethodCount) = taCode(tnMethodCount) + laLine(I) &&+ CR_LF llProcOpen = .F. CASE tnMethodCount = 0 OR NOT llProcOpen AND LEFT( LTRIM(laLine(I)),1 ) = '*' @@ -8790,18 +8960,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF ENDIF ENDFOR - - *-- Alphabetical ordering of methods - IF THIS.l_MethodSort_Enabled - ASORT(taMethods,1,-1,0,1) - ENDIF - - FOR I = 1 TO tnMethodCount - IF taMethods(I,2) > 0 THEN - m.tcSorted = m.tcSorted + taCode(taMethods(I,2)) - ENDIF - ENDFOR - ENDIF CATCH TO loEx @@ -8813,7 +8971,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDTRY RETURN - ENDPROC && SordMethod + ENDPROC && Method2Array ******************************************************************************************************************* @@ -8894,29 +9052,33 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_ALL_OBJECT_METHODS - LPARAMETERS tcMethods, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count, toFoxBin2Prg + LPARAMETERS tcMethods, taMethods, taCode, tnMethodCount, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count, toFoxBin2Prg *-- Finalmente, todos los métodos los ordeno y escribo juntos LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods - IF NOT EMPTY(tcMethods) + IF tnMethodCount > 0 THEN STORE '' TO lcMethods DIMENSION laMethods(1,3) WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' - .SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ; + .SortMethod( @tcMethods, @taMethods, @taCode, '', @tnMethodCount ; , @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count, @toFoxBin2Prg ) - FOR I = 1 TO lnMethodCount + lcMethods = C_TAB + + FOR I = 1 TO tnMethodCount *-- Genero los métodos indentados *-- Sustituyo el TEXT/ENDTEXT aquí porque a veces quita espacios de la derecha, y eso es peligroso - IF laMethods(I,2) = 0 + IF taMethods(I,2) = 0 LOOP ENDIF - lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + C_PROCEDURE + ' ' + laMethods(I,1) - lcMethods = lcMethods + CR_LF + .IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) ) - lcMethods = lcMethods + CR_LF + C_TAB + C_ENDPROC + *lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + C_PROCEDURE + ' ' + laMethods(I,1) + *lcMethods = lcMethods + CR_LF + .IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) ) + *lcMethods = lcMethods + CR_LF + C_TAB + C_ENDPROC + + lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), CHR(9) + CHR(9), .T. ) lcMethods = lcMethods + CR_LF ENDFOR ENDWITH && THIS @@ -8936,13 +9098,13 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base EXTERNAL ARRAY taMethods, taCode, taProtected, taPropsAndComments TRY - LOCAL lcMethod, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods - STORE '' TO lcMethod, lcProcDef, lcMethods + LOCAL lcMethod, lcMethodName, lnProtectedItem, lnCommentRow, lcProcDef, lcMethods + STORE '' TO lcMethod, lcMethodName, lcProcDef, lcMethods IF tnMethodCount > 0 THEN WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' FOR I = 1 TO tnMethodCount - lcMethod = CHRTRAN( taMethods(I,1), '^', '' ) + lcMethodName = CHRTRAN( taMethods(I,1), '^', '' ) lnProtectedItem = ASCAN( taProtected, taMethods(I,1), 1, 0, 0, 1+2+4) IF lnProtectedItem = 0 @@ -8960,28 +9122,35 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lcProcDef = 'PROTECTED PROCEDURE' ENDIF - lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethod, 1, 0, 1, 1+2+4+8) + lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethodName, 1, 0, 1, 1+2+4+8) *-- Nombre del método - TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> <> <> - ENDTEXT + *TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + * <<>> <> <> + *ENDTEXT + *lcMethods = lcMethods + CR_LF + lcProcDef + ' ' + taMethods(I,1) + lcMethod = CR_LF + lcProcDef + ' ' + taMethods(I,1) *-- Comentarios del método (si tiene) IF lnCommentRow > 0 AND NOT EMPTY(taPropsAndComments(lnCommentRow,2)) - TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - <<>> && <> - ENDTEXT + *TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 + * <<>> && <> + *ENDTEXT + *lcMethods = lcMethods + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2) + lcMethod = lcMethod + C_TAB + C_TAB + taPropsAndComments(lnCommentRow,2) ENDIF *-- Código del método - *-- Sustituyo el TEXT/ENDTEXT aquí 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 ) + lcMethod = lcMethod + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB ) ENDIF - lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' - lcMethods = lcMethods + CR_LF + *lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' + *lcMethods = lcMethods + CR_LF + lcMethod = lcMethod + CR_LF + C_TAB + 'ENDPROC' + lcMethod = lcMethod + CR_LF + lcMethods = lcMethods + lcMethod ENDFOR ENDWITH && THIS @@ -9889,6 +10058,10 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" + STORE 0 TO lnMethodCount + STORE '' TO laMethods, laCode + + loRegClass = NULL SCATTER MEMO NAME loRegClass IF toFoxBin2Prg.l_NoTimestamps @@ -9964,12 +10137,15 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO - DIMENSION laMethods(1,3) - laMethods = '' - .SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; + DIMENSION laMethods(1,3), laCode(1) + STORE '' TO laMethods, laCode + lnMethodCount = 0 + + .Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) - .write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + *.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + .get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) lnLastClass = 1 lcMethods = '' @@ -9998,7 +10174,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) ENDSCAN - .write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; + .write_ALL_OBJECT_METHODS( @lcMethods, @laMethods, @laCode, @lnMethodCount, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; , lnProtected_Count, @toFoxBin2Prg ) GOTO RECORD (lnRecno) @@ -10125,6 +10301,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg AND (EMPTY(TABLABIN.PARENT) ; AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) ) + STORE 0 TO lnMethodCount + STORE '' TO laMethods, laCode + loRegClass = NULL SCATTER MEMO NAME loRegClass @@ -10202,12 +10381,15 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *-- OBTENGO LOS MÉTODOS DE LA CLASE PARA POSTERIOR TRATAMIENTO - DIMENSION laMethods(1,3) - laMethods = '' - .SortMethod( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; + DIMENSION laMethods(1,3), laCode(1) + STORE '' TO laMethods, laCode + lnMethodCount = 0 + + .Method2Array( loRegClass.METHODS, @laMethods, @laCode, '', @lnMethodCount ; , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) - .write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + *.write_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) + .get_CLASS_METHODS( @lnMethodCount, @laMethods, @laCode, @laProtected, @laPropsAndComments ) lnLastClass = 1 lcMethods = '' @@ -10238,7 +10420,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg , @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count, @toFoxBin2Prg ) ENDSCAN - .write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; + .write_ALL_OBJECT_METHODS( @lcMethods, @laMethods, @laCode, @lnMethodCount, @laPropsAndComments, lnPropsAndComments_Count, @laProtected ; , lnProtected_Count, @toFoxBin2Prg ) GOTO RECORD (lnRecno)