Changeset: 202 v1.19.16

- Arreglo bug vcx/scx: las propiedades pierden la visibilidad hidden/protected cuando no tienen valor asignado (Ryan Harris)
- Arreglo bug vcx/scx: valor character con longitud >255 en propiedad de addobject, se regenera con tag <fb2p_value> incluido (Ryan Harris)
- Arreglo bug vcx/scx: Al regenerar binario con procedimiento vacío hace que se cuelgue FoxPro al intentar modificar
- Arreglo bug scx/vcx: Si la clase tiene un comentario multilínea, el binario generado se puede corromper (Tested on: Ffc\_frxcursor.vcx)
- Arreglo bug: Si _memberdata contiene CR entre sus valores, esos valores pueden perderse al regenerar el tx2
- Arreglo bug: Los valores de las propiedades con espacios a la derecha pierden esos espacios
- Arreglo de bug: cuando 2 o más métodos contienen el mismo nombre (ej: met y met2) se genera mal el tx2 (Ryan Harris)
This commit is contained in:
fdbozzo
2014-03-10 00:14:35 +01:00
10 changed files with 484 additions and 257 deletions

View File

@@ -2,15 +2,17 @@
* (ES) AUTOGENERADO - <20><>ATENCI<43>N!! - <20><>NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! * (ES) AUTOGENERADO - <20><>ATENCI<43>N!! - <20><>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!! * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*-------------------------------------------------------------------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_test.vcx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) *< FOXBIN2PRG: Version="1.19" SourceFile="fb2p_test.vcx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
* *
*< OLE: Nombre="cl_olecontrol" Parent="" ObjName="cl_olecontrol" OLEObject="C:\Windows\system32\richtx32.ocx" Checksum="3873290752" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDfG05c8M4BAwAAAAACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEoAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAD+////BwAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYAoAAAAAAA//8AAP//AQAAAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADAAAAFJpZ2h0TWFyZ2luABEAAABODQAAAAcAAAAAAAAAAAAAAAUAAABUZXh0ABQAAABIAAAAAAsAAABPAAAAAAUAAIAAAAAAAAABAAAAAQABAAIACAAAAHtccnRmMVxhbnNpXGRlZmYwe1xmb250dGJse1xmMFxmbmlsXGxlY29udHJvbDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" />
* *
DEFINE CLASS cl_commandgroup AS commandgroup && Descripci<63>n de cl_CommandGroup DEFINE CLASS cl_commandgroup AS commandgroup && Descripci<63>n de cl_CommandGroup
*< CLASSDATA: Baseclass="commandgroup" Timestamp="2013/12/03 19:51:29" Scale="Pixels" Uniqueid="_3XW0ATDKL" /> *< CLASSDATA: Baseclass="commandgroup" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod> *<DefinedPropArrayMethod>
*p: una_prop_cmgroup && Con comentario, pero sin valor *p: una_prop_cmgroup && Con comentario, pero sin valor
*</DefinedPropArrayMethod> *</DefinedPropArrayMethod>
ButtonCount = 2 ButtonCount = 2
Height = 66 Height = 66
Name = "cl_commandgroup" Name = "cl_commandgroup"
@@ -33,14 +35,39 @@ DEFINE CLASS cl_commandgroup AS commandgroup && Descripci
ENDDEFINE ENDDEFINE
DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
*< CLASSDATA: Baseclass="form" Timestamp="2014/01/07 19:58:17" Scale="Pixels" Uniqueid="_3XW0AGC4F" ProjectClassIcon="bmps\container.ico" ClassIcon="bmps\container.ico" /> *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" ProjectClassIcon="bmps\container.ico" ClassIcon="bmps\container.ico" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="Cl_optiongroup1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Cl_commandgroup1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Cl_imagen1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Cl_imagen2" UniqueID="" Timestamp="" />
*<DefinedPropArrayMethod>
*p: chidden && Prop.Hidden
*p: cprotected && Prop.Protegida
*a: ^ahidden[1,0] && Array Oculto
*a: ^aprotected[1,0] && Array Protegido
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
HIDDEN chidden
PROTECTED cprotected
Caption = "Form" Caption = "Form"
chidden = && Prop.Hidden
cprotected = && Prop.Protegida
DoCreate = .T. DoCreate = .T.
Height = 345 Height = 345
Left = 0 Left = 0
Name = "cl_form" Name = "cl_form"
Top = 0 Top = 0
Width = 570 Width = 570
_memberdata = <VFPData>
<memberdata name="ahidden" display="aHidden"/>
<memberdata name="aprotected" display="aProtected"/>
<memberdata name="chidden" display="cHidden"/>
<memberdata name="cprotected" display="cProtected"/>
</VFPData> && XML Metadata for customizable properties
ADD OBJECT 'Cl_commandgroup1' AS cl_commandgroup WITH ; ADD OBJECT 'Cl_commandgroup1' AS cl_commandgroup WITH ;
BackColor = 255,128,192, ; BackColor = 255,128,192, ;
@@ -63,7 +90,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
Command2.Picture = bmps\carpetacerrada.bmp, ; Command2.Picture = bmps\carpetacerrada.bmp, ;
Command2.Top = 4, ; Command2.Top = 4, ;
Command2.Width = 104 Command2.Width = 104
*< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="commandgroup" UniqueID="_3XW0AX81B" Timestamp="2013/12/03 19:50:23" ZOrder="1000" /> *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="commandgroup" />
ADD OBJECT 'Cl_imagen1' AS cl_imagen WITH ; ADD OBJECT 'Cl_imagen1' AS cl_imagen WITH ;
Height = 34, ; Height = 34, ;
@@ -73,7 +100,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
Stretch = 1, ; Stretch = 1, ;
Top = 276, ; Top = 276, ;
Width = 38 Width = 38
*< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="image" UniqueID="_3XW0AGC4F" Timestamp="2014/01/07 19:58:17" ZOrder="1100" /> *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="image" />
ADD OBJECT 'Cl_imagen2' AS cl_imagen WITH ; ADD OBJECT 'Cl_imagen2' AS cl_imagen WITH ;
Height = 34, ; Height = 34, ;
@@ -83,7 +110,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
Stretch = 1, ; Stretch = 1, ;
Top = 276, ; Top = 276, ;
Width = 38 Width = 38
*< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="image" UniqueID="_3XW0BP1GV" Timestamp="2014/01/07 19:58:17" ZOrder="1200" /> *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="image" />
ADD OBJECT 'Cl_optiongroup1' AS cl_optiongroup WITH ; ADD OBJECT 'Cl_optiongroup1' AS cl_optiongroup WITH ;
BackColor = 0,128,255, ; BackColor = 0,128,255, ;
@@ -106,7 +133,7 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
Option2.Style = 1, ; Option2.Style = 1, ;
Option2.Top = 8, ; Option2.Top = 8, ;
Option2.Width = 104 Option2.Width = 104
*< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="optiongroup" UniqueID="_3XW0AONF4" Timestamp="2013/12/07 02:23:11" ZOrder="900" /> *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="optiongroup" />
PROCEDURE Cl_optiongroup1.Init PROCEDURE Cl_optiongroup1.Init
*-- Prueba para comprobar que respeta espacios y TABS del c<>digo *-- Prueba para comprobar que respeta espacios y TABS del c<>digo
@@ -123,10 +150,12 @@ DEFINE CLASS cl_form AS form OLEPUBLIC && mi OLE server DLL
ENDDEFINE ENDDEFINE
DEFINE CLASS cl_imagen AS image OLEPUBLIC && otro ole DEFINE CLASS cl_imagen AS image OLEPUBLIC && otro ole
*< CLASSDATA: Baseclass="image" Timestamp="2014/01/07 20:06:20" Scale="Pixels" Uniqueid="_3XW0BNCFT" /> *< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod> *<DefinedPropArrayMethod>
*m: *un_metodo_de_clase && Para testear si el c<>digo se va a la clase cl_form *m: *un_metodo_de_clase && Para testear si el c<>digo se va a la clase cl_form
*</DefinedPropArrayMethod> *</DefinedPropArrayMethod>
Height = 16 Height = 16
Name = "cl_imagen" Name = "cl_imagen"
Picture = bmps\sobrepostal.bmp Picture = bmps\sobrepostal.bmp
@@ -139,7 +168,8 @@ DEFINE CLASS cl_imagen AS image OLEPUBLIC && otro ole
ENDDEFINE ENDDEFINE
DEFINE CLASS cl_olecontrol AS olecontrol DEFINE CLASS cl_olecontrol AS olecontrol
*< CLASSDATA: Baseclass="olecontrol" Timestamp="2013/12/03 20:17:14" Scale="Pixels" Uniqueid="_3XW0BVZ14" OLEObject="C:\Windows\system32\richtx32.ocx" CheckSum="3873290752" /> *< CLASSDATA: Baseclass="olecontrol" Timestamp="" Scale="Pixels" Uniqueid="" Nombre="cl_olecontrol" Parent="" ObjName="cl_olecontrol" OLEObject="C:\Windows\system32\richtx32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDfG05c8M4BAwAAAAACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEoAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAD+////BwAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYAoAAAAAAA//8AAP//AQAAAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADAAAAFJpZ2h0TWFyZ2luABEAAABODQAAAAcAAAAAAAAAAAAAAAUAAABUZXh0ABQAAABIAAAAAAsAAABPAAAAAAUAAIAAAAAAAAABAAAAAQABAAIACAAAAHtccnRmMVxhbnNpXGRlZmYwe1xmb250dGJse1xmMFxmbmlsXGxlY29udHJvbDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" />
Height = 67 Height = 67
Name = "cl_olecontrol" Name = "cl_olecontrol"
Width = 131 Width = 131
@@ -147,13 +177,15 @@ DEFINE CLASS cl_olecontrol AS olecontrol
ENDDEFINE ENDDEFINE
DEFINE CLASS cl_optiongroup AS optiongroup && descripcion DEFINE CLASS cl_optiongroup AS optiongroup && descripcion
*< CLASSDATA: Baseclass="optiongroup" Timestamp="2013/12/03 19:43:10" Scale="Pixels" Uniqueid="_3XW0ALVUS" /> *< CLASSDATA: Baseclass="optiongroup" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod> *<DefinedPropArrayMethod>
*m: *propiedad_de_clase_con_valor_access *m: *propiedad_de_clase_con_valor_access
*m: *propiedad_de_clase_con_valor_assign *m: *propiedad_de_clase_con_valor_assign
*p: propiedad_de_clase_con_valor && Tiene un valor por defecto *p: propiedad_de_clase_con_valor && Tiene un valor por defecto
*p: propiedad_de_clase_sin_valor && Una propiedad sin valor para heredar *p: propiedad_de_clase_sin_valor && Una propiedad sin valor para heredar
*</DefinedPropArrayMethod> *</DefinedPropArrayMethod>
ButtonCount = 2 ButtonCount = 2
Height = 46 Height = 46
Name = "cl_optiongroup" Name = "cl_optiongroup"
@@ -191,7 +223,8 @@ DEFINE CLASS cl_optiongroup AS optiongroup && descripcion
ENDDEFINE ENDDEFINE
DEFINE CLASS proj_hook AS projecthook DEFINE CLASS proj_hook AS projecthook
*< CLASSDATA: Baseclass="projecthook" Timestamp="2014/01/07 20:48:17" Scale="Pixels" Uniqueid="_3YX18LJ09" /> *< CLASSDATA: Baseclass="projecthook" Timestamp="" Scale="Pixels" Uniqueid="" />
Height = 22 Height = 22
Name = "proj_hook" Name = "proj_hook"
Width = 23 Width = 23

Binary file not shown.

Binary file not shown.

View File

@@ -133,9 +133,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' ) loObj.get_PropsFrom_PROTECTED( toReg_Esperado.PROTECTED, .F., @laProtected_Esperado, @lnProtected_Count_Esperado, '' )
*-- Methods *-- Methods
loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count ) loObj.get_ADD_OBJECT_METHODS( toReg, toReg, '', @laMethods, '', @lnMethods_Count, '', 0, '', 0 )
loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado ) loObj.get_ADD_OBJECT_METHODS( toReg_Esperado, toReg_Esperado, '', @laMethods_Esperado, '', @lnMethods_Count_Esperado, '', 0, '', 0 )
lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')' lcExtraData = tcParent + '.' + tcObjName + ' (' + tcClass + ')'

View File

@@ -234,7 +234,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indic
FUNCTION Deberia_analizarAsignacion_TAG__memberdata__EnUnaAsignacion_MultiLine FUNCTION Deberia_analizarAsignacion_TAG__memberdata__EnUnaAsignacion_MultiLine
LOCAL lnCodError, lcMenError, lnCodError_Esperado ; LOCAL lnCodError, lcMenError, lnCodError_Esperado ;
, lcPropName, lcPropValue, laProps(1,2), lnProp_Count, I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, lcMemo ; , lcPropName, lcPropValue, laProps(1,2), lnProp_Count, I, lcTag_I, lcTag_F, lnLen_lcTag_I, lnLen_lcTag_F, lcMemo ;
, lcValue_Esperado ; , lcValue_Esperado, lcMemberdata ;
, loEx AS EXCEPTION , loEx AS EXCEPTION
LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG" LOCAL loObj AS c_conversor_prg_a_bin OF "FOXBIN2PRG.PRG"
loObj = THIS.icObj loObj = THIS.icObj
@@ -247,6 +247,12 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indic
lnLen_lcTag_I = LEN(lcTag_I) lnLen_lcTag_I = LEN(lcTag_I)
lnLen_lcTag_F = LEN(lcTag_F) lnLen_lcTag_F = LEN(lcTag_F)
lnProp_Count = 17 lnProp_Count = 17
lcMemberdata = '<memberdata name="mimetodo_1" display="miMetodo_1"/>' + CR_LF
lcMemberdata = lcMemberdata + '<memberdata name="mimetodo_2" display="miMetodo_2"/>' + CR_LF
lcMemberdata = lcMemberdata + '<memberdata name="mimetodo_3" display="miMetodo_3"/>' + CR_LF
lcMemberdata = lcMemberdata + '<memberdata name="mimetodo_4" display="miMetodo_4"/>' + CR_LF
lcMemberdata = lcMemberdata + '<memberdata name="mimetodo_5" display="miMetodo_5"/>' + CR_LF
lcMemberdata = lcMemberdata + '<memberdata name="mimetodo_6" display="miMetodo_6"/>'
DIMENSION laProps(lnProp_Count,2) DIMENSION laProps(lnProp_Count,2)
laProps = '' laProps = ''
laProps( 1,1) = 'Height = 2.73' laProps( 1,1) = 'Height = 2.73'
@@ -275,7 +281,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indic
laProps(12,2) = '' laProps(12,2) = ''
laProps(13,1) = '_memberdata = <VFPData>' laProps(13,1) = '_memberdata = <VFPData>'
laProps(13,2) = '' laProps(13,2) = ''
laProps(14,1) = '<memberdata name="mimetodo" display="miMetodo"/>' laProps(14,1) = lcMemberdata
laProps(14,2) = '' laProps(14,2) = ''
laProps(15,1) = '</VFPData>' laProps(15,1) = '</VFPData>'
laProps(15,2) = 'XML Metadata for customizable properties' laProps(15,2) = 'XML Metadata for customizable properties'
@@ -284,7 +290,7 @@ DEFINE CLASS ut__foxbin2prg__c_conversor_prg_a_bin__analizarAsignacion_TAG_Indic
*-- DATOS ESPERADOS *-- DATOS ESPERADOS
STORE 0 TO lnCodError_Esperado STORE 0 TO lnCodError_Esperado
lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(71,8) + '<VFPData>' + CR_LF + '<memberdata name="mimetodo" display="miMetodo"/>' + CR_LF + '</VFPData>' lcValue_Esperado = REPLICATE( CHR(1), 517 ) + STR(23 + LEN(lcMemberdata),8) + '<VFPData>' + CR_LF + lcMemberdata + CR_LF + '</VFPData>'
*-- TEST *-- TEST
loObj.analizarAsignacion_TAG_Indicado( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ; loObj.analizarAsignacion_TAG_Indicado( @lcPropName, @lcPropValue, @laProps, @lnProp_Count ;

View File

@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
_ProductName = " FOXBIN2PRG" _ProductName = " FOXBIN2PRG"
_MajorVer = "1" _MajorVer = "1"
_MinorVer = "19" _MinorVer = "19"
_Revision = " 288" _Revision = " 299"
_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()

Binary file not shown.

Binary file not shown.

View File

@@ -76,6 +76,8 @@
* 21/02/2014 FDBOZZO v1.19.12 Centralizar ZOrder controles en metadata de cabecera de clase para minimizar diferencias / Tambi<62>n mover UniqueIDs y Timestamps a metadata * 21/02/2014 FDBOZZO v1.19.12 Centralizar ZOrder controles en metadata de cabecera de clase para minimizar diferencias / Tambi<62>n mover UniqueIDs y Timestamps a metadata
* 26/02/2014 FDBOZZO v1.19.13 Arreglo bug TimeStamp en archivo cfg / ExtraBackupLevels se puede desactivar / Optimizaciones / Casos FoxUnit * 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<63>n carga cfg en batch * 01/03/2014 FDBOZZO v1.19.14 Arreglo bug regresion cuando no se define ExtraBackupLevels no hace backups / Optimizaci<63>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 Arreglo bugs: Propiedades y m<>todos Hidden/Protected que no se generan /// Crash m<>todos vac<61>os
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES> * </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
@@ -93,7 +95,9 @@
* 01/01/2014 Fidel Charny REPORTE BUG mnx v1.16: El men<65> no siempre respeta la posici<63>n original LOCATION y a veces se genera mal el MNX (se arregla en v1.17) * 01/01/2014 Fidel Charny REPORTE BUG mnx v1.16: El men<65> no siempre respeta la posici<63>n original LOCATION y a veces se genera mal el MNX (se arregla en v1.17)
* 05/01/2014 Fidel Charny REPORTE BUG mnx v1.17: Se genera cl<63>usula "DO" o llamada Command cuando no Procedure ni Command que llamar // Diferencia de Case en NAME (se arregla en v1.18) * 05/01/2014 Fidel Charny REPORTE BUG mnx v1.17: Se genera cl<63>usula "DO" o llamada Command cuando no Procedure ni Command que llamar // Diferencia de Case en NAME (se arregla en v1.18)
* 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 * 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) * 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 // Orden de properties defTop,defLeft,etc
* </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)> * </TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)>
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
@@ -127,6 +131,10 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
*-- NO modificar! / Do NOT change! *-- NO modificar! / Do NOT change!
#DEFINE C_CMT_I '*--' #DEFINE C_CMT_I '*--'
#DEFINE C_CMT_F '--*' #DEFINE C_CMT_F '--*'
#DEFINE C_CLASSCOMMENTS_I '*<ClassComment>'
#DEFINE C_CLASSCOMMENTS_F '*</ClassComment>'
#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_I '*< CLASSDATA:'
#DEFINE C_CLASSDATA_F '/>' #DEFINE C_CLASSDATA_F '/>'
#DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I) #DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I)
@@ -437,7 +445,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_ConfigEvaluated = .F. l_ConfigEvaluated = .F.
l_Debug = .F. l_Debug = .F.
l_Test = .F. l_Test = .F.
l_ShowErrors = .F. l_ShowErrors = .T.
l_ShowProgress = .F. l_ShowProgress = .F.
l_Recompile = .F. l_Recompile = .F.
l_NoTimestamps = .T. l_NoTimestamps = .T.
@@ -740,7 +748,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
.writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) ) .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowProgress: ' + TRANSFORM(tcDontShowProgress) )
CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:') CASE LEFT( laConfig(I), 15 ) == LOWER('DontShowErrors:')
*-- Priorizo si tcDontShowErrors NO viene con "0" como par<61>metro, ya que los scripts vbs
*-- los utilizan para sobreescribir la configuraci<63>n por defecto de foxbin2prg.cfg
IF NOT TRANSFORM(tcDontShowErrors) == '0'
tcDontShowErrors = ALLTRIM( SUBSTR( laConfig(I), 16 ) ) tcDontShowErrors = ALLTRIM( SUBSTR( laConfig(I), 16 ) )
ENDIF
.writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) ) .writeLog( JUSTFNAME(lcConfigFile) + ' > tcDontShowErrors: ' + TRANSFORM(tcDontShowErrors) )
CASE LEFT( laConfig(I), 13 ) == LOWER('NoTimestamps:') CASE LEFT( laConfig(I), 13 ) == LOWER('NoTimestamps:')
@@ -796,7 +808,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF ENDIF
.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') .l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1')
IF NOT EMPTY(tcDontShowErrors)
.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') .l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1')
ENDIF
.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) .l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))
.l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0') .l_NoTimestamps = NOT (TRANSFORM(tcNoTimestamps) == '0')
.l_Debug = (TRANSFORM(tcDebug)=='1') .l_Debug = (TRANSFORM(tcDebug)=='1')
@@ -1074,7 +1088,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF ENDIF
THIS.writeLog( lcErrorInfo ) THIS.writeLog( lcErrorInfo )
ENDIF ENDIF
IF THIS.l_Debug AND THIS.l_ShowErrors IF THIS.l_ShowErrors
MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 )
ENDIF ENDIF
IF tlRelanzarError IF tlRelanzarError
@@ -1082,7 +1096,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF ENDIF
FINALLY FINALLY
IF THIS.l_ShowProgress THIS.writeLog_Flush()
IF THIS.l_ShowProgress AND VARTYPE(THIS.o_Frm_Avance) = "O"
THIS.o_Frm_Avance.HIDE() THIS.o_Frm_Avance.HIDE()
THIS.o_Frm_Avance.RELEASE() THIS.o_Frm_Avance.RELEASE()
STORE NULL TO THIS.o_Frm_Avance STORE NULL TO THIS.o_Frm_Avance
@@ -1333,7 +1348,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
FINALLY FINALLY
loFSO = NULL loFSO = NULL
THIS.o_Conversor = NULL THIS.o_Conversor = NULL
THIS.writeLog_Flush() *THIS.writeLog_Flush()
ENDTRY ENDTRY
@@ -1869,7 +1884,7 @@ DEFINE CLASS c_conversor_base AS SESSION
FOR I = 1 TO OCCURS( '/>', tcValue ) FOR I = 1 TO OCCURS( '/>', tcValue )
TEXT TO lcValue TEXTMERGE ADDITIVE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcValue TEXTMERGE ADDITIVE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 )>> <<CHRTRAN( STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 ), CR_LF, ' ' )>>
ENDTEXT ENDTEXT
ENDFOR ENDFOR
@@ -1879,7 +1894,11 @@ DEFINE CLASS c_conversor_base AS SESSION
</VFPData> </VFPData>
ENDTEXT ENDTEXT
IF LEN(lcValue) > 255
tcValue = C_MPROPHEADER + STR( LEN(tcValue), 8 ) + tcValue tcValue = C_MPROPHEADER + STR( LEN(tcValue), 8 ) + tcValue
ELSE
tcValue = CHRTRAN( tcValue, CR_LF, '' )
ENDIF
CASE LEFT( tcValue, C_LEN_FB2P_VALUE_I ) == C_FB2P_VALUE_I CASE LEFT( tcValue, C_LEN_FB2P_VALUE_I ) == C_FB2P_VALUE_I
*-- Valor especial Fox con cabecera CHR(1): Debo agregarla y desnormalizar el valor *-- Valor especial Fox con cabecera CHR(1): Debo agregarla y desnormalizar el valor
@@ -2059,7 +2078,8 @@ DEFINE CLASS c_conversor_base AS SESSION
IF '&'+'&' $ tcLine IF '&'+'&' $ tcLine
ln_AT_Cmt = AT( '&'+'&', tcLine) ln_AT_Cmt = AT( '&'+'&', tcLine)
tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) ) tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) )
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, ' ', CHR(9) ) && Quito espacios y TABS *tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, ' ', CHR(9) ) && Quito espacios y TABS
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, CHR(9) ) && Quito TABS
ENDIF ENDIF
RETURN RETURN
@@ -2085,7 +2105,7 @@ DEFINE CLASS c_conversor_base AS SESSION
IF '=' $ tcAsignacion IF '=' $ tcAsignacion
ln_AT_Cmt = AT( '=', tcAsignacion) ln_AT_Cmt = AT( '=', tcAsignacion)
tcPropName = ALLTRIM( LEFT( tcAsignacion, ln_AT_Cmt - 2 ), 0, ' ', CHR(9) ) && Quito espacios y TABS tcPropName = ALLTRIM( LEFT( tcAsignacion, ln_AT_Cmt - 2 ), 0, ' ', CHR(9) ) && Quito espacios y TABS
tcValue = ALLTRIM( SUBSTR( tcAsignacion, ln_AT_Cmt + 2 ) ) tcValue = LTRIM( SUBSTR( tcAsignacion, ln_AT_Cmt + 2 ) )
IF PCOUNT() > 3 IF PCOUNT() > 3
*-- EVALUAR UNA ASIGNACI<43>N QUE PUEDE SER MULTIL<49>NEA (memberdata, fb2p_value, etc) *-- EVALUAR UNA ASIGNACI<43>N QUE PUEDE SER MULTIL<49>NEA (memberdata, fb2p_value, etc)
@@ -2195,7 +2215,7 @@ DEFINE CLASS c_conversor_base AS SESSION
FOR I = 1 TO OCCURS( '/>', tcValue ) FOR I = 1 TO OCCURS( '/>', tcValue )
TEXT TO lcValue TEXTMERGE ADDITIVE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcValue TEXTMERGE ADDITIVE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 )>> <<>> <<CHRTRAN( STREXTRACT( tcValue, '<memberdata ', '/>', I, 1+4 ), CR_LF, ' ' )>>
ENDTEXT ENDTEXT
ENDFOR ENDFOR
@@ -2282,6 +2302,8 @@ DEFINE CLASS c_conversor_base AS SESSION
lcPropName = SUBSTR(tcPropName,5) lcPropName = SUBSTR(tcPropName,5)
CASE NOT tcOperation == 'SETNAME' CASE NOT tcOperation == 'SETNAME'
ERROR C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC ERROR C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC
CASE lcPropName == 'FRXDataSession' && En un VCX lo v<> primero de todo y tambi<62>n luego de Height <20>?
lcPropName = 'A001' + lcPropName
CASE lcPropName == 'ErasePage' && PageFrame: Debe estar antes que PageCount CASE lcPropName == 'ErasePage' && PageFrame: Debe estar antes que PageCount
lcPropName = 'A002' + lcPropName lcPropName = 'A002' + lcPropName
CASE lcPropName == 'PageCount' && PageFrame: Debe estar antes que ActivePage CASE lcPropName == 'PageCount' && PageFrame: Debe estar antes que ActivePage
@@ -2306,6 +2328,14 @@ DEFINE CLASS c_conversor_base AS SESSION
lcPropName = 'A040' + lcPropName lcPropName = 'A040' + lcPropName
CASE lcPropName == 'Tag' CASE lcPropName == 'Tag'
lcPropName = 'A045' + lcPropName lcPropName = 'A045' + lcPropName
CASE lcPropName == 'DefTop' && Propiedad con evaluaci<63>n: Debe estar antes que Top
lcPropName = 'A046' + lcPropName
CASE lcPropName == 'DefLeft' && Propiedad con evaluaci<63>n: Debe estar antes que Left
lcPropName = 'A047' + lcPropName
CASE lcPropName == 'DefHeight' && Propiedad con evaluaci<63>n: Debe estar antes que Height
lcPropName = 'A048' + lcPropName
CASE lcPropName == 'DefWidth' && Propiedad con evaluaci<63>n: Debe estar antes que Width
lcPropName = 'A049' + lcPropName
CASE lcPropName == 'Top' CASE lcPropName == 'Top'
lcPropName = 'A050' + lcPropName lcPropName = 'A050' + lcPropName
CASE lcPropName == 'Left' CASE lcPropName == 'Left'
@@ -2693,6 +2723,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
+ [<memberdata name="analizarbloque_foxbin2prg" display="analizarBloque_FoxBin2Prg"/>] ; + [<memberdata name="analizarbloque_foxbin2prg" display="analizarBloque_FoxBin2Prg"/>] ;
+ [<memberdata name="analizarbloque_hidden" display="analizarBloque_HIDDEN"/>] ; + [<memberdata name="analizarbloque_hidden" display="analizarBloque_HIDDEN"/>] ;
+ [<memberdata name="analizarbloque_include" display="analizarBloque_INCLUDE"/>] ; + [<memberdata name="analizarbloque_include" display="analizarBloque_INCLUDE"/>] ;
+ [<memberdata name="analizarbloque_classcomments" display="analizarBloque_CLASSCOMMENTS"/>] ;
+ [<memberdata name="analizarbloque_classmetadata" display="analizarBloque_CLASSMETADATA"/>] ; + [<memberdata name="analizarbloque_classmetadata" display="analizarBloque_CLASSMETADATA"/>] ;
+ [<memberdata name="analizarbloque_objectmetadata" display="analizarBloque_OBJECTMETADATA"/>] ; + [<memberdata name="analizarbloque_objectmetadata" display="analizarBloque_OBJECTMETADATA"/>] ;
+ [<memberdata name="analizarbloque_ole_def" display="analizarBloque_OLE_DEF"/>] ; + [<memberdata name="analizarbloque_ole_def" display="analizarBloque_OLE_DEF"/>] ;
@@ -3432,6 +3463,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
@@ -3463,6 +3495,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
@@ -3971,10 +4004,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF ENDIF
IF RIGHT(tcLine, 3) == ', ;' && VALOR INTERMEDIO CON ", ;" IF RIGHT(tcLine, 3) == ', ;' && VALOR INTERMEDIO CON ", ;"
.get_SeparatedPropAndValue( LEFT(tcLine, LEN(tcLine) - 3), @lcProp, @lcValue ) .get_SeparatedPropAndValue( LEFT(tcLine, LEN(tcLine) - 3), @lcProp, @lcValue, toClase, @taCodeLines, @tnCodeLines, @I )
toObjeto.add_Property( @lcProp, @lcValue ) toObjeto.add_Property( @lcProp, @lcValue )
ELSE && VALOR FINAL SIN ", ;" (JUSTO ANTES DEL <END OBJECT>) ELSE && VALOR FINAL SIN ", ;" (JUSTO ANTES DEL <END OBJECT>)
.get_SeparatedPropAndValue( RTRIM(tcLine), @lcProp, @lcValue ) .get_SeparatedPropAndValue( tcLine, @lcProp, @lcValue, toClase, @taCodeLines, @tnCodeLines, @I )
toObjeto.add_Property( @lcProp, @lcValue ) toObjeto.add_Property( @lcProp, @lcValue )
ENDIF ENDIF
@@ -4058,7 +4091,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ELSE ELSE
*-- Sin comentarios *-- Sin comentarios
lcPAM_Name = LOWER( RTRIM( SUBSTR( tcLine, lnPos+1 ), 0, ' ', CHR(9) ) ) lcPAM_Name = LOWER( RTRIM( SUBSTR( tcLine, lnPos+1 ), 0, ' ', CHR(9) ) )
lcItem = lcPAM_Name + IIF(ISALPHA(lcPAM_Name), '', ' ') + CR_LF lcItem = lcPAM_Name + IIF( LEFT(lcPAM_Name,1) $ '^*' , ' ', '') + CR_LF
*-- Separo propiedades y m<>todos *-- Separo propiedades y m<>todos
IF LEFT(lcItem,1) == '*' IF LEFT(lcItem,1) == '*'
@@ -4111,6 +4144,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ; LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
, llCLASSMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ; , llCLASSMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed, llOBJECTMETADATA_Completed ; , llINCLUDE_Completed, llCLASS_PROPERTY_Completed, llOBJECTMETADATA_Completed ;
, llCLASSCOMMENTS_Completed ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
STORE '' TO tcProcedureAbierto STORE '' TO tcProcedureAbierto
@@ -4137,7 +4171,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF ENDIF
* B<>squeda del ID de fin de bloque (ENDDEFINE) * 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 FOR I = toClase._Ini_Cab TO tnCodeLines
tc_Comentario = '' tc_Comentario = ''
.set_Line( @tcLine, @taCodeLines, I ) .set_Line( @tcLine, @taCodeLines, I )
@@ -4149,13 +4183,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @loObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ; CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @loObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ;
, @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion ) , @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
*-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN *-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN
llCLASS_PROPERTY_Completed = .T. STORE .T. TO llCLASSCOMMENTS_Completed ;
llPROTECTED_Completed = .T. , llCLASS_PROPERTY_Completed ;
llHIDDEN_Completed = .T. , llPROTECTED_Completed ;
llINCLUDE_Completed = .T. , llHIDDEN_Completed ;
llCLASSMETADATA_Completed = .T. , llINCLUDE_Completed ;
llOBJECTMETADATA_Completed = .T. , llCLASSMETADATA_Completed ;
llDEFINED_PAM_Completed = .T. , llOBJECTMETADATA_Completed ;
, llDEFINED_PAM_Completed
CASE NOT llPROTECTED_Completed AND .analizarBloque_PROTECTED( @toClase, @tcLine ) CASE NOT llPROTECTED_Completed AND .analizarBloque_PROTECTED( @toClase, @tcLine )
@@ -4171,12 +4206,16 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llINCLUDE_Completed = .T. 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 ) CASE NOT llCLASSMETADATA_Completed AND .analizarBloque_CLASSMETADATA( @toClase, @tcLine )
llCLASSMETADATA_Completed = .T. llCLASSMETADATA_Completed = .T.
CASE NOT llOBJECTMETADATA_Completed AND .analizarBloque_OBJECTMETADATA( @toClase, @tcLine ) 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 ) CASE NOT llDEFINED_PAM_Completed AND .analizarBloque_DEFINED_PAM( @toClase, @tcLine, @taCodeLines, tnCodeLines, @I )
@@ -4184,13 +4223,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE .analizarBloque_ADD_OBJECT( @toModulo, @toClase, @tcLine, @I, @taCodeLines, @tnCodeLines ) CASE .analizarBloque_ADD_OBJECT( @toModulo, @toClase, @tcLine, @I, @taCodeLines, @tnCodeLines )
llCLASS_PROPERTY_Completed = .T. STORE .T. TO llCLASSCOMMENTS_Completed ;
llPROTECTED_Completed = .T. , llCLASS_PROPERTY_Completed ;
llHIDDEN_Completed = .T. , llPROTECTED_Completed ;
llINCLUDE_Completed = .T. , llHIDDEN_Completed ;
llCLASSMETADATA_Completed = .T. , llINCLUDE_Completed ;
llOBJECTMETADATA_Completed = .T. , llCLASSMETADATA_Completed ;
llDEFINED_PAM_Completed = .T. , llOBJECTMETADATA_Completed ;
, llDEFINED_PAM_Completed
CASE .analizarBloque_ENDDEFINE( @toClase, @tcLine, @I, @tcProcedureAbierto ) CASE .analizarBloque_ENDDEFINE( @toClase, @tcLine, @I, @tcProcedureAbierto )
@@ -4203,7 +4243,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- NOTA: Las propiedades se agregan tal cual, incluso aunque est<73>n separadas en *-- NOTA: Las propiedades se agregan tal cual, incluso aunque est<73>n separadas en
*-- varias l<>neas (memberdata y fb2p_value), ya que luego se ensamblan en classProps2Memo(). *-- varias l<>neas (memberdata y fb2p_value), ya que luego se ensamblan en classProps2Memo().
* *
.get_SeparatedPropAndValue( RTRIM(tcLine), @lcProp, @lcValue, @toClase, @taCodeLines, tnCodeLines, @I ) .get_SeparatedPropAndValue( tcLine, @lcProp, @lcValue, @toClase, @taCodeLines, tnCodeLines, @I )
toClase.add_Property( @lcProp, @lcValue, RTRIM(tc_Comentario) ) toClase.add_Property( @lcProp, @lcValue, RTRIM(tc_Comentario) )
@@ -4323,7 +4363,57 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDPROC 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 ) + CR_LF && 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 PROCEDURE analizarBloque_CLASSMETADATA
LPARAMETERS toClase, tcLine LPARAMETERS toClase, tcLine
@@ -7090,36 +7180,46 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE get_ADD_OBJECT_METHODS PROCEDURE get_ADD_OBJECT_METHODS
LPARAMETERS toRegObj, toRegClass, tcMethods, taMethods, taCode, tnMethodCount LPARAMETERS toRegObj, toRegClass, tcMethods, taMethods, taCode, tnMethodCount ;
, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count
EXTERNAL ARRAY taPropsAndComments, taProtected
TRY TRY
LOCAL lcMethodName
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
.SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ) .SortMethod( toRegObj.METHODS, @taMethods, @taCode, '', @tnMethodCount ;
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count )
*-- Ubico los m<>todos protegidos y les cambio la definici<63>n. *-- Ubico los m<>todos protegidos y les cambio la definici<63>n.
*-- Los m<>todos se deben generar con la ruta completa, porque si no es imposible saber a que objeto corresponden, *-- 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. *-- o si son de la clase.
IF tnMethodCount > 0 THEN IF tnMethodCount > 0 THEN
FOR I = 1 TO tnMethodCount FOR I = 1 TO tnMethodCount
IF taMethods(I,2) = 0
LOOP
ENDIF
IF EMPTY(toRegObj.PARENT) IF EMPTY(toRegObj.PARENT)
tcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1) lcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
ELSE ELSE
DO CASE DO CASE
CASE '.' $ toRegObj.PARENT 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 + '.' CASE LEFT(toRegObj.PARENT + '.', LEN( toRegClass.OBJNAME + '.' ) ) == toRegClass.OBJNAME + '.'
tcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1) lcMethodName = toRegObj.OBJNAME + '.' + taMethods(I,1)
OTHERWISE OTHERWISE
tcMethodName = toRegObj.PARENT + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1) lcMethodName = toRegObj.PARENT + '.' + toRegObj.OBJNAME + '.' + taMethods(I,1)
ENDCASE ENDCASE
ENDIF ENDIF
*-- Genero el m<>todo SIN indentar, ya que se hace luego *-- Genero el m<>todo SIN indentar, ya que se hace luego
*-- 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
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 + .IndentarMemo( taCode(taMethods(I,2)) )
tcMethods = tcMethods + CR_LF + 'ENDPROC' tcMethods = tcMethods + CR_LF + 'ENDPROC'
ENDFOR ENDFOR
@@ -7379,7 +7479,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
X = 0 X = 0
FOR I = lnFin TO 1 STEP -1 FOR I = lnFin TO 1 STEP -1
IF NOT EMPTY(laLineas(I)) && <20>ltima l<>nea de c<>digo IF NOT EMPTY(laLineas(I)) && <20>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 <20>ltima l<>nea de c<>digo debe ser ENDPROC. [' + laLineas(1) + ']' *ERROR 'Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [' + laLineas(1) + ']'
ERROR (TEXTMERGE(C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC)) ERROR (TEXTMERGE(C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC))
ENDIF ENDIF
@@ -7482,11 +7582,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]
@@ -7496,7 +7597,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
@@ -7585,13 +7686,44 @@ 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
IF tnProtected_Count = 0
lnProtectedLine = 0
ELSE
lnProtectedLine = ASCAN( taProtected, lcMethod + '^', 1, 0, 1, 1+2+4+8 )
ENDIF
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
@@ -7686,7 +7818,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE write_ALL_OBJECT_METHODS PROCEDURE write_ALL_OBJECT_METHODS
LPARAMETERS tcMethods LPARAMETERS tcMethods, taPropsAndComments, tnPropsAndComments_Count, taProtected, tnProtected_Count
*-- Finalmente, todos los m<>todos los ordeno y escribo juntos *-- Finalmente, todos los m<>todos los ordeno y escribo juntos
LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods, lcMethods2 LOCAL laMethods(1), laCode(1), lnMethodCount, I, lcMethods, lcMethods2
@@ -7696,11 +7828,16 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
DIMENSION laMethods(1,3) DIMENSION laMethods(1,3)
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
.SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ) .SortMethod( @tcMethods, @laMethods, @laCode, '', @lnMethodCount ;
, @taPropsAndComments, tnPropsAndComments_Count, @taProtected, tnProtected_Count )
FOR I = 1 TO lnMethodCount FOR I = 1 TO lnMethodCount
*-- Genero los m<>todos indentados *-- Genero los m<>todos indentados
*-- 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 laMethods(I,2) = 0
LOOP
ENDIF
lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + C_PROCEDURE + ' ' + laMethods(I,1) 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 + .IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )
lcMethods = lcMethods + CR_LF + C_TAB + C_ENDPROC lcMethods = lcMethods + CR_LF + C_TAB + C_ENDPROC
@@ -7730,23 +7867,24 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
FOR I = 1 TO tnMethodCount FOR I = 1 TO tnMethodCount
lcMethod = CHRTRAN( taMethods(I,1), '^', '' ) lcMethod = CHRTRAN( taMethods(I,1), '^', '' )
lnProtectedItem = ASCAN( taProtected, taMethods(I,1), 1, 0, 0, 1) lnProtectedItem = ASCAN( taProtected, taMethods(I,1), 1, 0, 0, 1+2+4)
lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethod, 1, 0, 1, 1+8)
DO CASE IF lnProtectedItem = 0
CASE lnProtectedItem = 0 lnProtectedItem = ASCAN( taProtected, taMethods(I,1) + '^', 1, 0, 0, 1+2+4)
IF lnProtectedItem = 0
*-- M<>todo com<6F>n *-- M<>todo com<6F>n
lcProcDef = 'PROCEDURE' lcProcDef = 'PROCEDURE'
ELSE
CASE taProtected(lnProtectedItem) == taMethods(I,1)
*-- M<>todo protegido
lcProcDef = 'PROTECTED PROCEDURE'
CASE taProtected(lnProtectedItem) == taMethods(I,1) + '^'
*-- M<>todo oculto *-- M<>todo oculto
lcProcDef = 'HIDDEN PROCEDURE' lcProcDef = 'HIDDEN PROCEDURE'
ENDIF
ELSE
*-- M<>todo protegido
lcProcDef = 'PROTECTED PROCEDURE'
ENDIF
ENDCASE lnCommentRow = ASCAN( taPropsAndComments, '*' + lcMethod, 1, 0, 1, 1+2+4+8)
*-- Nombre del m<>todo *-- Nombre del m<>todo
TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
@@ -7762,7 +7900,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
@@ -7786,31 +7927,37 @@ 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 , 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, 0, '' ) .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
IF tnProtected_Count = 0
lnProtectedItem = 0
ELSE
lnProtectedItem = ASCAN(taProtected, taPropsAndValues(I,1), 1, 0, 0, 1) lnProtectedItem = ASCAN(taProtected, taPropsAndValues(I,1), 1, 0, 0, 1)
ENDIF
DO CASE DO CASE
CASE lnProtectedItem = 0 CASE lnProtectedItem = 0
@@ -7827,7 +7974,27 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDCASE ENDCASE
ENDFOR ENDFOR
.write_DEFINED_PAM( @taPropsAndComments, lnPropsAndComments_Count ) *-- Segunda barrida para las propiedades Hidden/Protected que no est<73>n definidas en Properties
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
IF EMPTY(taProtected(I,1)) ;
OR ASCAN(taPropsAndValues, CHRTRAN( taProtected(I), '^', '' ), 1, 0, 1, 1) > 0 ;
OR ASCAN(taPropsAndComments, '*' + CHRTRAN( taProtected(I), '^', '' ), 1, 0, 1, 1) > 0
LOOP
ENDIF
IF RIGHT( taProtected(I), 1 ) == '^'
*-- Propiedad oculta
lcHiddenProp = lcHiddenProp + ',' + CHRTRAN( taProtected(I), '^', '' )
ELSE
*-- Propiedad protegida
lcProtectedProp = lcProtectedProp + ',' + taProtected(I)
ENDIF
ENDFOR
.write_DEFINED_PAM( @taPropsAndComments, tnPropsAndComments_Count )
.write_HIDDEN_Properties( @lcHiddenProp ) .write_HIDDEN_Properties( @lcHiddenProp )
@@ -7946,10 +8113,19 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
LPARAMETERS toRegClass LPARAMETERS toRegClass
*-- Comentario de la clase *-- Comentario de la clase
IF NOT EMPTY(toRegClass.RESERVED7) THEN IF NOT EMPTY(toRegClass.RESERVED7) THEN
*-- Si es multil<69>nea, debe ir en un tag <ClassComments> aparte
IF OCCURS( CHR(13), toRegClass.RESERVED7 ) > 0 THEN
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<C_CLASSCOMMENTS_I>>
<<THIS.IndentarMemo( toRegClass.Reserved7, C_TAB + C_TAB + '*' )>>
<<>> <<C_CLASSCOMMENTS_F>>
ENDTEXT
ELSE && Comentario in-line
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2
<<>> <<'&'+'&'>> <<toRegClass.Reserved7>> <<>> <<'&'+'&'>> <<toRegClass.Reserved7>>
ENDTEXT ENDTEXT
ENDIF ENDIF
ENDIF
ENDPROC ENDPROC
@@ -8571,9 +8747,10 @@ 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) , lnMethodCount
STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs
STORE NULL TO loRegClass, loRegObj STORE NULL TO loRegClass, loRegObj
WITH THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG'
@@ -8663,7 +8840,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)
@@ -8674,8 +8852,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 )
@@ -8701,10 +8880,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
loRegObj.UNIQUEID = ALLTRIM(loRegObj.UNIQUEID) loRegObj.UNIQUEID = ALLTRIM(loRegObj.UNIQUEID)
ENDIF ENDIF
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) .get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
ENDSCAN ENDSCAN
.write_ALL_OBJECT_METHODS( @lcMethods ) .write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
GOTO RECORD (lnRecno) GOTO RECORD (lnRecno)
ENDSCAN ENDSCAN
@@ -8772,9 +8952,10 @@ 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) , lnMethodCount
STORE '' TO laMethods, laCode, laProtected, laPropsAndComments, laObjs
STORE NULL TO loRegClass, loRegObj STORE NULL TO loRegClass, loRegObj
WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' WITH THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG'
@@ -8880,7 +9061,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)
@@ -8892,8 +9074,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 )
@@ -8921,10 +9104,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
loRegObj.UNIQUEID = ALLTRIM(loRegObj.UNIQUEID) loRegObj.UNIQUEID = ALLTRIM(loRegObj.UNIQUEID)
ENDIF ENDIF
.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) .get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods, @laMethods, @laCode, @lnMethodCount ;
, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
ENDSCAN ENDSCAN
.write_ALL_OBJECT_METHODS( @lcMethods ) .write_ALL_OBJECT_METHODS( @lcMethods, @laPropsAndComments, lnPropsAndComments_Count, @laProtected, lnProtected_Count )
GOTO RECORD (lnRecno) GOTO RECORD (lnRecno)
ENDSCAN ENDSCAN

View File

@@ -1,7 +1,12 @@
*.FXP *.7z
*.LNK *.bak
*.SCC *.fxp
*.TMP *.lnk
*.BAK *.log
*/FXUResults.* *.mpx
*/FXUPersist*.* *.scc
*.spx
*.tbk
*.zip
*/vfp_init.prg
*/includefilelist.txt