From 24993aea0fab9a6a4be3eb5086e9d7c9e1494510 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 2 Feb 2014 15:20:33 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Changeset:=20152=20-=20Optimizaci=C3=B3n=20?= =?UTF-8?q?Ole=20-=20Blocksize=20ajustado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/FB2P_DBC.DC2 | 2 +- TESTS/DATOS_READONLY/fb2p_dbc.dbc | Bin 8968 -> 8968 bytes TESTS/DATOS_READONLY/fb2p_dbc.dct | Bin 133632 -> 138240 bytes foxbin2prg.pj2 | 4 +-- foxbin2prg.pjt | Bin 340608 -> 340608 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 55 ++++++++++++++---------------- 7 files changed, 28 insertions(+), 33 deletions(-) diff --git a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 index 8310436..2179979 100644 --- a/TESTS/DATOS_READONLY/FB2P_DBC.DC2 +++ b/TESTS/DATOS_READONLY/FB2P_DBC.DC2 @@ -38,7 +38,7 @@ - DRIVER={Oracle en OraClient11g_home1};SERVER=CARTERA;UID=STROSNC;PWD=STROSNC;DBQ=CARTERA;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=Me;CSR=F;FWC=F;FBS=60000;TLO=O;MLD=0;ODA= + DRIVER={Oracle en OraClient11g_home1};SERVER=BDDServer;UID=BDDUser;PWD=BDDPwd;DBQ=CARTERA;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=Me;CSR=F;FWC=F;FBS=60000;TLO=O;MLD=0;ODA .F. .T. 15 diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc index 08c5fa24c9c1465a5ae8e63cb925c07343ba3ea2..e663ef900069390afe5579c6b750060653857050 100644 GIT binary patch delta 21 ccmeBh>u_T+;A3Li$WkfHl*O^RUbvGV06X0UbpQYW delta 21 ccmeBh>u_T+;A3Rn$WkfHw3=aay>KT#06mQbumAu6 diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dct b/TESTS/DATOS_READONLY/fb2p_dbc.dct index bf41563e18df337b30c83a9c5057836a700b56db..2efee30272540014f650ebcd9e6e993c0ec3846e 100644 GIT binary patch delta 148 zcmZpe!qKpUgM)#Aqkw^d!C|A|C&q~ioXyNk?aWM!+nJe|{<2SQU}f8UOsj#BbYk)` qt+@(LE-t~TMP;c))}fv*wm@EJF_0Y)4rT|Gr%Z0r-pB*A91Z|oxG$yv delta 35 rcmZqJ!O<{ @@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144997514" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145207292" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 56a4f9bce016659dc4dd1ab78c15e2da2bb3730e..71b32ee6681461f0ed31c94783a5083da5af2e1d 100644 GIT binary patch delta 12544 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 Dk(X2Z diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 5a3a0e708660c0ba22a3c8100e015709b548dadb..616291a8485a133e59d29ea9944709f9059878f1 100644 GIT binary patch delta 37 qcmZ3_vz~{=fRBl3Bg=Lcc2gq*a}y(z$%k0}g4srvMw5@RW&!}SFA6IF delta 37 ocmZ3_vz~{=fR9mrBg=Lcb`wiWb5lc$$%k0}LfIyhkFjO~0JvHTW&i*H diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 10fc4d1..3c7a3c4 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -66,7 +66,9 @@ * 08/01/2014 FDBOZZO v1.19.3 Cambio en los timestamps de los TXT para mantener los valores vacíos que generaban muchísimas diferencias * 22/01/2014 FDBOZZO v1.19.4 Nuevo parámetro Recompile para forzar la recompilación. Ahora por defecto el binario no se recompila para ganar velocidad y evitar errores. Debe recompilar manualmente. * 22/01/2014 FDBOZZO v1.19.4 DBC: Agregado soporte para comentarios multilínea (propiedad Comment) -* 30/01/2014 FDBOZZO v1.19.5 Agregada compatibilidad con SourceSafe para Diff y Merge +* 26/01/2014 FDBOZZO v1.19.5 Agregado soporte multiidioma y traducción al Inglés +* 01/02/2014 FDBOZZO v1.19.6 Agregada compatibilidad con SourceSafe para Diff y Merge +* 02/02/2014 FDBOZZO v1.19.7 Encapsulación de objetos OLE en el propio control o clase // Blocksize ajustado * * *--------------------------------------------------------------------------------------------------- @@ -83,7 +85,6 @@ * 14/12/2013 Fidel Charny REPORTE BUG scx v1.13: La regeneración de los forms (SCX) no regenera el último registro COMMENT (arreglado en v.1.14) * 01/01/2014 Fidel Charny REPORTE BUG mnx v1.16: El menú no siempre respeta la posició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áusula "DO" o llamada Command cuando no Procedure ni Command que llamar // Diferencia de Case en NAME (se arregla en v1.18) -* 07/01/2014 F.D.Bozzo BUG vcx/scx v1.18: Los *métodos deben ir siempre al final en el Reserved3, si no los eventos ACCESS no se disparan * * *--------------------------------------------------------------------------------------------------- @@ -692,7 +693,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM , loFSO AS Scripting.FileSystemObject lnCodError = 0 - tcRecompile = EVL(tcRecompile,'') + tcRecompile = EVL(tcRecompile,'1') *SET DELETED ON *SET DATE YMD @@ -1379,6 +1380,7 @@ DEFINE CLASS c_conversor_base AS SESSION SET CENTURY ON SET SAFETY OFF SET TABLEPROMPT OFF + SET BLOCKSIZE TO 0 PUBLIC C_FB2PRG_CODE C_FB2PRG_CODE = '' && Contendrá todo el código generado @@ -3588,14 +3590,17 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base toObjeto._Ole2 = .get_ValueByName_FromListNamesWithValues( 'OLEObject', 'C', @laPropsAndValues ) toObjeto._ZOrder = .get_ValueByName_FromListNamesWithValues( 'ZOrder', 'I', @laPropsAndValues ) toObjeto._TimeStamp = INT( .RowTimeStamp( .get_ValueByName_FromListNamesWithValues( 'TimeStamp', 'T', @laPropsAndValues ) ) ) + toObjeto._Ole = STRCONV( .get_ValueByName_FromListNamesWithValues( 'Value', 'C', @laPropsAndValues ), 14 ) IF NOT EMPTY( toObjeto._Ole2 ) && Le agrego "OLEObject = " delante toObjeto._Ole2 = 'OLEObject = ' + toObjeto._Ole2 + CR_LF ENDIF *-- Ubico el objeto ole por su nombre (parent+objname), que no se repite. - IF toModulo.existeObjetoOLE( toObjeto._Nombre, @Z ) - toObjeto._Ole = toModulo._Ole_Objs(Z)._Value + IF EMPTY(toObjeto._Ole) && Si _Ole está vacío es porque el propio control no tiene la info y está en la cabecera (antiguo guardado) + IF toModulo.existeObjetoOLE( toObjeto._Nombre, @Z ) + toObjeto._Ole = toModulo._Ole_Objs(Z)._Value + ENDIF ENDIF EXIT @@ -3975,6 +3980,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base toClase._ProjectClassIcon = .get_ValueByName_FromListNamesWithValues( 'ProjectClassIcon', 'C', @laPropsAndValues ) toClase._ClassIcon = .get_ValueByName_FromListNamesWithValues( 'ClassIcon', 'C', @laPropsAndValues ) toClase._Ole2 = .get_ValueByName_FromListNamesWithValues( 'OLEObject', 'C', @laPropsAndValues ) + toClase._Ole = STRCONV( .get_ValueByName_FromListNamesWithValues( 'Value', 'C', @laPropsAndValues ), 14 ) ENDWITH && THIS IF NOT EMPTY( toClase._Ole2 ) && Le agrego "OLEObject = " delante @@ -4497,7 +4503,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin VALUES ; ( 'COMMENT' ; , 'RESERVED' ; - , loClase._TimeStamp ; + , 0 ; , '' ; , '' ; , '' ; @@ -7208,8 +7214,12 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base *-- Agrego metainformación para objetos OLE IF toRegObj.BASECLASS == 'olecontrol' - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - OLEObject="<>" + Parent="<>" + ObjName="<>" + OLEObject="<>" + Parent="<>" + ObjName="<>" + OLEObject="<>" - Parent="<>" - ObjName="<>" - OLEObject="< - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145207292" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145212368" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index 71b32ee6681461f0ed31c94783a5083da5af2e1d..b05d3d260453169ecfc6f5fd62f1ea8c0963b0bf 100644 GIT binary patch delta 19935 zcmaK!2Yggj_Q%hCW!|LsHtCg60!cu6OQQ)SBoPpW5JHn_{6JQ7x19 zzCvqnD-;k%WL>Y&{spP&osiaOWo@e>+xt~TlzTflk*zJQt9PcVN7G_5Y=MwnNUL|H zVYi(qV`N%JR_?&ep|%jpMIO(_v>I0$pEsdw+PI?9L_>2$U7CF$ zY-akbLA~r^dz#i&dG7HIs`I8sG`mT||Eo>1R_9}|{DvS8KZ79`;p-XNQIG{o8 z!Wz^IE;e6sZA?Qe9&3=Flig7CUsWADjrI3He$hgkhe)p{T7jg9O&@g{DLv>&GgGo& zM-b(Ty2DW>t=>d=XjPK0j5)F=MCb`hi-fjDiO8zKU81d#21Mz(TxrD(7kvsvHHp41 za+58=$Ple(Q0>*+@TRmh@!A-=Ez{u4{+ISAip-uE3Zpe>@pT2geX~*ItBbX-05q!J zS5##$Y?UdkA4-e9=GOb`FY%>BF;20KU{urBWQ(Qe>fMkg1|_~R?NU&^4_fI20c#obn&&ccY z=+Y)zI8ywOa$CY4NlQa6ybt5h>(bSwrY4)esJ|Y4_Jdx%^cbq^WU@tx9ts`m(@RM9 z5)(wXt&clVPR?^-NV@w`lLhnqzPy z#Ha*lRYSThVXsu3@AhKwH79-eJoVut`n*XW3^Bx!RR?+nTQ6ufXWAh46z0fG!42v) zO@B+WF}d;jc+`8+rGuCDpdS!^K{wjK`sAey9{iyRLVL_IMxl9zqeUZrG~2wzsE9Yk zW7ZnfTr*}aLSF;%;$@;s?VaqapgyLmZI4iIdyntT@DEj^dbGCs(tU#wj2Q_OZNrRv z6Pk6K#GG96yVH(v(GC|UY(lXOYFkr%8x%k(D&EG)t5a3;-@>?tw@M-gF3|- z&2epnk-)MoNN4C@PmwMRR#VU5#5_CTMYotFW*=q)gL1{{+2|eVy*uK9brGRA3JWJAJKKb%AoizT zPG6FVF840Ut}gm&3B0o;MW_CG;cXEwxNG4(>+%l^&#~_4HdbXqM8Bfq!kqHL@!cb; zdiHQ_(_-sI-I)xySi9%Tcg#f9iryiy54vGmjZv#LQ+*cM9Pkm5TTAx^JM`}>tcf~M#=~z(u zKD+3ON!C5C?qobMDL=akCzBMRkC~UKgU}MOY?`f!#XjEA1P3h!K7xctPIiO$)?bO2 zd3xUVp?;YoQwI)B&dRRZ-Oab^b{}_Ze>YV7Z@p?WebJz<7Cmoa*%t{$9jH|-@J<+s zmi&OeNCv^T$BXy2CcP$4SRma}bcUJHO~aRlrx(!yynGjOg@?}@I5ey3;kewYqkU8F zbNN+aDK%amG&t{}oQxKMKz+*gmy!#Z2d&47(dro85V>(+q1yQ8+l<03<37q5F(p}C?R0N5CNjaXk=Y<)rvj7 z{t#lC^T1;orQ-N0Ki0`hybDt+>tl)Gim&qA>+6mo%XG|N|Eie1SMMJmKGmItR(06- zNL(Mu#W6<40&HToPKX&L3>hL$jFnceR(-Ost<@y@B%+xHrdtz9Hz1fPfAXu-sIeAJ zH;E<+t0LPhu(PtBMR;g?VuN~)Y<}1xs>dEJGKW?^J}#qL?n4?HgWSYZc*-UT)4CNap^fWmaBco@~XB4F0r z8>vs2LR4PZJGrS{*p7B7l}0uZFjMd z{X{1Nbz6%8!wI7Y1}s?AUcz5tk#m z3KNDRPk|}Q)z@OJiR$|xT^|}}s_#qJoe8Iw6n$#NY>rU)#xWSMr}>HmDS(%!Fi)0R zUF*u8W%qBRYHTA9#Xs}D5xXwiO87!EdxC2|Y#{rT5A$I`Y%_nthds&k(HhGa`Y|`2 z>C1cq^l^*Rtq1zms(IY_L}#`<0*4-BfV$p4Ku%QGtvbe!#jz9&UxWIGjEyObFor>l zoMT0ZVQ8fo-FCvz*}L7#(d}@1x6>WnR`?zZ(^zkgzGqf@2e71n7yw~MKI2V+EQ`(K z`}?qtN*fqezJ8MA&u6xl-1&8t4dOS0*rag#)Qa^hQLP8n`J#dPa%E^-KDSy}i1aWs zMt>GxRLp{_(Si=lKTW=OLGF`m<@~@J$s)rx@r{YBEi>`G9a$Wo8NxKHCU&*h!kRdc zwL*lrtO>T?zJK6v>x5Ae0g*UvBH1{w=|#k$Rctu2;TWW+r=>M0$2CzM&Ot`4m-dYA zYmBb&!MYOXBvEbxvyJhfyPZl^>DmBQ6m;e7Ls{^6oQ8j$ASM+m9GYNMB20E8?x@bk zsO~VcjlQQg#FiR%xQ4TihUirIBu4{r1TtF4KM7?KRv-OEhI{aYVKb3Gd<(4FR>`*G zzg6pjYW?u|+g}lYzkzsy@L2E|uM`_8xVi0cTxo{l($8XaL-ZwU8Y4WR=%=0+W9ci~ zNq30(b}*bG^5{-c-wToYUVtj9c`w-WBJ^>*j4ugeu^kmG9)J1H23N!Z)V{$Hk;U3q zdYogWyUY3#lRCb~JD;U89gbx8yp z5al0z-?m>b+tS6hM+lM1vc^o2jfewo+D(r*mXTgF#j z)+8c>ovi9oK`{H4r&y(6Pj3-ow}=<{h=XkO|DK4=2U(6J`D*+?AC}CvRQEi@rZ6YF zeU*rBtznNQdZ_n|C>DLVKBC)({S3Bvkus=+ON5!H_wy*V$VoLQTb(U`!!~7&CO_-U; z>b&3C%PclKBPSz!ct(2C|6J+4PqL9r@-yoLEG^fndmUnxEk`)x3>(Kv`G;rNPWD&z zSM2v`FV{03rI1;V6>IurESwi@2JS=pX1Im*J~ zaTY>Fh*>e7xaeq5+nN4ha^BYX@uSSrF&Fn>OEla?;yzTANTkH;fx`dk@}=F_uaBm| zV~M|doZe_mp@LQ<@hdhKkc3Ht$21Dysw5#BmbtDYIbHX{#g9d_7qwp6)jXq1G-KL- z(;U;@$v*85IHr9c_xc^v?ri4qzq2l^bM@HYS)%kmHxyrZnH`XN`0CSbn&D&n7p|qf zItK78S#quZ@(-5C2I?nQYzA+AMn7Tth{M16w3t!hC4>zYm#HG|!B`-NKh?TZogXbV z37v_@US;u!4D_7(Ej04LVT%f3@?gcmaND?wN$_dZ@26cwjMEA8F-#JtH1P`kYFXTt zMl{#n*KlPXdZ|d^bVm4!_|9JRLq}0@t!&kAT3eR2*Q;MCi+W@Jd%Z<1>pkPBHx~8Y zSFH$u!*o}WRp8XX)ms# zbYGFcL$0&+e&S+L1iX%1s5_CLyv~B!2NE1Fp;3o4{H&_fy z;9pLb!>gaT!HOA6sLu41K4g(7*byDq?;Jf4j+zmUiV)(8Q*%>R)Uv+F{;;={fMVRU zj?Kd#FJGxwr~g(s-v!MQF}N64qot!=n(K3^XVXx@ZC`0p(toR9qN`zaP(Dr=o$;>C zrI-0h<58OVOQos*t@JcE3>#kGJlB_go`4lL0C)TSvPOugtJ1Bxx{dzQSff+1{Obnx zqG!0#+(qs!as>0=1Ef?Rye`&Az3oWt9ViXQ;Dp^q?0|Y!Y?8wHT8mTyIXGA1UeRNCO-N#oqJ0ju{R|oCT zTH`~GRX*68KG+ht#+Dr`8k+XlLCD#S4-J(fVC8JR*WA)lQQ1L%8&-YMAG-s_hBGJXeQDNp8%#;NH*? zRys(x((?=}jX=kuFMIS(*dy_{>t-?#A4vt_j>=&rYntn7;bV=u4jOgA$KF#H&ySXZ z(qbih@MF4Tr;LJ;Mzn>q)I9~mjAieu-(WVVv-px|se`5;-ReX6-e}2R`BJiVS`56AC_NVKKjV}iIorMZvSu>YcE`!cwi)i%dhpNI^ohqe?^!cMmCkATce?~ zk7yFR9%hpq5eLjWu_J_+vUiK z;6_wnC-7z7*|?e{0SI3w#FwQrqAh2b+k4>z_>gk$S;!o^dAI#RXo9aIzBymxdN zd&gDmop7A}?R)17#n?M&LY%R8S{ZvsFW}fa@%FtFE*gtk@9dqCs=jx^xoWI>B)7J& z`ZkVL|0-@paEm4FQpKwG=hx$;DArbA`n-25>GuC#`+a1^|HaIBsX8-WKDpleNr^~& zF+rnre9oSo`S4Pna!3wg-T4^&@u|f30YtKy3d&OR$3HQp{CU3MkZg(T;NF~2_;}&? zDV6yZ6YUx&N-HaUvaq7EsNzk&=a3v6upz<7>p~L?D~I9}+Pu`12U{iazYodrt%fEW ziO!T=Sejo_C_c0Kx^r{oQ!9!p3kR1?Y~(|0%4fNQQnm%pzFEQ%L~N^N23QdYx@^g<`$I{ z=2YgFlz;i4p$#TJ%vlL$XZgq@aui$2XB?4RYp1jIRNmp792&%PjI3@{TvS?^kMSy= zg4VKJe(H!E$F_6xQ8|>I=V@5f2+_u9RIi z)zOmdQGCWxIgw50pB$BgwS5nij*donJu_DQE@{KPGo}I{386AyX(% zIw$+_87_(w+r?)d(>t{MnC#D9<<-aJ=&18^jg0OzzM?R{vM{X}^IKdruG`Co9;1;L zqy+o5TVSxWJzqccz7C^TkzH6`R#9nMcz1yzg{4!@zHaDTsIa8G za(Xtd5-JLw!7-=3fUNj-AqO5#!@{q!kvhVpf$K@c&Whp<3zoVai+sNll zW#h0rDu)zSK2}y>WIg$=krp5}gWeNS4Ytelw6czEwi znv$NLmzj#|wcN)x^U{-Yl=R-`eDO)F`y+g-$k=)}uQ@4)N>A?Lw@%7olKWmBcuEeJ za`y3Vr{pm0ouBkq@Hw?|ur}yd2l$zDQE5iHe+^%DN{-Ps*BD7+nfnbrX0)rtGFy3y z|8+{XSmvD-NeV9h90sZ8vQVk~?^Cj$<@2jLv`qi-PoXmD>DnW=3=r>;lAHLF)7ZUkO+vz!5 zb|ENPsLXmz(uq!d`B^#2@_sK}*)rdPzCz_>ym3^T0s4?Ort8o$^O^p<%{k2IXM_0A zbF#(nogpHNbIU9&lg~Vdfyv3_%g$jC^0Gx17m6Z&y}c48HD>dx=j7H>)k8e!yc{0r z{fLq7N&`y^uM{j#0$TUS#0Vw80OhXLNps@4q1XJAeO-ksLsLPFE#B`sfAjbP>bR@kO3+ z5q;kFA|G-Qi=^OnUVKrGbyimz`7Olvc2O)rvo+y|W^rM1zoNq8g2_Rf_}+_h zkhRNZBN>-<6;n#bV?T;Khwa)Ht0ZZQ$mrT~*fYNpDz}!Z=XMH}drQ^KQ$pp@QZ*R9 z4!2oQSsmMBgjwjkT4t+t7b@?Tsx96^;jIXGjVuJA`Ag+e!~1A;{L z{^)bzw4%uvQ5dtzGUWZ*p5UhEh3y@0Ei9N)QCMyf1p+a;qK;;peABLVHeRJ$#B0Gu zPP48Prm!qTXo4^e_Oj#kD*x2gmV2t)6)G}Y?8EnJm=p#K!AQWcX608*E-b*yA0Jpc zp-fbLFpRUya4nJHJmfMKdwn?XeOV3&IT|5q3Bd%yjleOd7d}}uzEG6PjNy|m%TfLM z#2Y!BXi9kj)>L|GTGw_$6^a?ovs?Fp>3Jz>X&E^=+w4hqcfYP3uepo`KBoh3xGcv> zGm?1ZAK=4Xd5ZXZIgRK4A-9b`G*na^h6zYd?Vpj0k6E(5%ete&w>N}p=m@^~4>_X8 z>m!ULRkVFzdip2>_3%){KEeexODgf`ldOI>Vmi>9ySyzwf=vTBK5q`SvbktN1a zkYoQo~%tm-^!6Me=9$U zdaUz5HT3u9AM<}g-^P)@!xsh{9q;~?ptko}q2qRa^VqNW-pJQtAb#Ixr~<_zO6BHj zvhRqR{r_BD_-{hr&e4db8iVg`?CfJgpWw*1=%mj2)V8U;U?kpKDF3q1aU*Iv8p9j=EKT?aRS?$B0u9YLa-3J=^ny1p|LB6h54)I_1kfCq+&Y{EkNu)`!Be<h^*u!UmTyu5oi~<>e9i2an3|FuG0jjlH|^{kgT0JF z($6ia`4z&YUwMIl^QRmX^WJUje|pzQXl~NTHT=;!*%CZ! zU-1F9{@D!?cV|kVRiugUrQ-(?;?o)NwP#!`4^K-rSbWPAoYTzWx(u8($eu1f-4Pej z*>*-GAb4=9okI;yZ{{#NH`m9)`BJ8=ViCNrq#V5e+fP*q!}?Y~BrA=BrCW?YHBm{f zem+ZaebVy9K^gZ!&NQK-BrpHT{L=A-3cgXAJ!J41{_!>?T#7l*J8V}1`PprXpLF`B z0Y2Lmi`)<2xlG)yB*}*jA%M>i>QYHp2k`YE$%4Zd{_=CEL;3{=qU}nu?CWID^571| zV%p%Mpap#64kds;vqSNgHoNjSb|}eGs)g?qe{(F{CjJ&!c=C@*vT2G%6sVfiKY*V@ zA?XDRe+znvTlik__d^Spb}GrC|EK4}7l8)nr9G5`ORAg<6G6(&9D;8p4BM%MO8%j| zd?$`{W5f6>JCz`5c_ja6rxGmni{{&QD&eEU@SPPB!SZ1JES#HpS8W|0aHM8uWMyXO z8mXCs^>?W~M5?nWYkW`T?&O4?JarciQYi!Zgk4Hl=_ zb}6l;!d$+4ml7k*&gK6Rf4>^V19xMN4v*s9b}Ox<#bfxm-KcWy82-X;C0@!H$2SPB z9LImzt+bI=j(=m15+|)0&*S$f(bC58e8?UpOxiu3m+V3DZN(hvQPQbm{+ZydllU3I z2PScCFJ5zMGLPS@L`avX@84j zHqvQ%G215HU4_eo`{E_`}Y>BHxoR07$H-18LrG{?0%>6G%BWb#G@DO7#=j1uM?P(jJ; z1)4-jcwdyfh>XN ztJjn=Inv0NLTBh3jPXAZFTSZn+6#GCzj9M~FhV>$3Rs^HF2?-#%(Gn_Zpkt41?* zzr2DH`6xg2VOGvJ`>7oyPnDnZQ&+Vq7by}RwgPVPeado5!v8OK7XSaXk1qQs(HiP& zuHNLYwo|RsCldJ-5&a7n*il#@T_9_Z<2!QTc7h>)`6SU#;K#sMA%8H9C=OTR)4{tT zfAkztUodXJ=r_pP^F(ie*Mi$Y?(!iK0%yYg3XO(*dppr{FpxhovQnEJ_@>b=qW)N( z2azFsH_>bRh#m%C1oz)h=M5s|CQ$*n7x*2>Hat_n zDc}wG*5cg1iDrRI!QJ2kcbORd48}Qwrf7^NnQ?1mf;k0q$nUt|W$Kbt?N6f)j z7@UaCgWr9XQNdzHAAo-chgLCK^9G}8FvGMw!5KZYlF*pJ^I!ia%i0#C$`OGg}KbQ{dUw;}gFgS!t`{PGQa2D0@6qg?P$;MNy$ z5WEE4Oel^)@iXA{Kk$Hm2WMPi^y^hd>%ijc`_r$X^*8WR@L%9PkX>&w+6R`fu(m*6 z_9vzc>;mpthedmf5q|wj7Vs*_FE^o+ZiFxUVvX2vT2rzAGN2GEeWxl>v`M0Q-~r%$ zkYDzcXd$=~+{H_x9T5`MfVY6BL`w8qf<%4siQ0Ma^X(2FND{WB(OHF&>I}LnP{wE77yy>EM%)6L2H)0r(B@A;=@fOLPeQ zF<2^)sAHi-swZ|3_%!6vB@zXK#lm%larkz+L}S4W3wJthF6QFG;u~-fIN@1z*18=80=$W)f&bhkQU9MMa`7R075oR}w{eC}1+N1S zJTB2H9FNz44}&xRKnKK0*B22GR{pP$fBs9NOmHOFdRrpv$-gC<14VBr=HnpyCJw1v z!K1;d9d<*<<$kSk8{QQYpVW-3<%T_AyCeuVH`au!aU8e1QWLgcL2%gkerjQJoPJ-uv zw?Y0OQzowfqK)A6Y?%&@lxY%p2l%OnWpXK!X%#pOJKM z!NbARpSI#hLwGhp@fZ}+Y?-QGl<7C{Jn+*m$<%g{Os#_Odt>l8$XAx2$KY?kA#b8V zI7Yn%{uzAiW0~GthoAI-e+56dUZ(C_WteaLq6vHv@}+9%!1(45y=(ncrWs%1hyq0b zwn~SuWlBGQVFc%ZuR?zQS5yeb*XAkaH<`K}!w?3;GJ?N?-1h{IJm6*E+mO4Tk?9HW zX7F#2-SJzhSHSMrIr|`Q#}CWgLohvHYsKF(?UfaJ6p9?N)f9zhx+ydZJOdo(uF$^% z75Wjp4m>DKr-fSM1$q6BL@!UZE{uA8>pJg*qfE^exx|J_Px8szUp~_{I;d zOhe-yQm9WD{5p90aD{$*OriB)Pi)oaiWHJd6^aOlBLc64+;NIRBf)(fWCE`CSLp*NR)gOhtkT>eD(wZY0ecNqkx8Ya;Pv2FA+N|%=@R%e z@B)NN%L`Sq#^Gh)c5rbMCaSamybXLEa{Xf}EdlQaKVPg;pAwb6io^W>1jQ1#wEj=3 z)PM|!!9PRZHdQ5;Rz#=3E9R1^R!JAg7^w27m9t0PG zpN0G$p3&f9@H-!?l)h1=7r+a_Qz4gcRp~SED)7fb{z0W>`G6Gea* zgNq?Qhi5qWHSi~ptMNPnegk|0@+CZD!Arp5W)ro+V=aW@EhxqTO7J`mejCgo_l6@c z18)QuK;DFBF?b8O2J)+3CVCUR8@$-xL|p?+^e6ZLcs%5aNPHO!%wWEkLp~LYMz=%s z1lHnA^g;rzLLY~s6BOa?O|+zwiQWf43f=?RwTp>PgC~GDBRu}DkBJ(=^T3bxHPKuI z4qX$7J_NHNChD1MqGjM8!FiDLN1NzZ@FnmYkbf#PkMHCbj zr6!80G*JP#A2@!xiGIQJ1NcGk-;iH?)3)4*#WZ+aQODC&Uq0Iq@Tf|xuLyc*mW z@|G$LIe0Vp%xfmfUTUIQ;Dg{Pkgr--m}n~$e?jrl`zG4I)y#&t(U)*UTkDp8wm4q_|I2m%EU$G{@ z-+(J2TMK?O(M%|QgyL2W7SKryA@~w_I^=A`RtLcz@MvFLM+0t{Xhbsp85eLB$fYAj2<#lJS!sHtM!lif28DN&Mq}bN znhL%QE@-dOf(JA@26lx9+yMD-Z;b*v5w!(-AkZ6=fv?tqdxPiq)2QUk)<M)Wxj{1f>5bsEjsqR~e1 z4e&dVhkvHg1+Wub_Qh{7BHwD%wJSytydCn&?=~z{p!~ZnXEwHs`B+(0iN%%(qic-)U@G{6@_*aw`gSUcHAfNMcBA-+=5bW!X ze_<)ui3Wl_5#@x%I*}ajMBBlk;8`Pa?mvz*1S1*=mQG+=PQwB!*a6^mXAtP%_#Tar zfj)*J_8CU|aa5XyL&9xv)l(8x;biowCu}vsrs4QF^&(C}HC}KW;E%UU^b!sl4c_n@ z;345MZNa(VXFnXPz#FoVhPZ!10PcIhwUcD}0bzYI#(fE1b zIg(0GAm&>Oc|M-@i1`}O-M$FvUIl*-iMtH|*@Q$B?*S}|?C*l2S!Mng6;QiLX+bx8*I{+U2 zBLWUMGfz0HBjAKXaP4>&fRBPtLq3UTG58qxH8{Jm=i&c36sMu^xPZ^Q;GKNntuzc{ zJBvoea7JB(^8tsq2E*BG0Y`&l`f2nCoXa>klX$Ruu0~p+Mn}O9fU6;gz!yw_FX#u} z134JB-v_4sLGUif7p$=LFF;WM#hbA8{|DP11KV8$F8Ty!7q}|BGGZ754w9 C2@HV% delta 18963 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 Rwgw#krim^hMA_eg{vV69t(5=( diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 616291a8485a133e59d29ea9944709f9059878f1..5e305c57f2320d8a87cf327f78acf5fb6fbc89f5 100644 GIT binary patch delta 27 hcmZ3_vz}+eUKUnEBV%)e$%k0}gIH!3laH}x0sw&J2@(JR delta 27 icmZ3_vz}+eUKUmZa}y(z$%k0}16f9vMw5@RW&!|#H3=2~ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3c7a3c4..0688a03 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -112,7 +112,7 @@ * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- -LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile +LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile, tcNoTimestamps *-- Internacionalización / Internationalization *-- Fin / End @@ -311,7 +311,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb ******************************************************************************************************************* LOCAL loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' -LOCAL lnResp, loEx as Exception +LOCAL lnResp, loEx AS EXCEPTION *SYS(2030,1) *SYS(2335,0) @@ -323,7 +323,7 @@ LOCAL lnResp, loEx as Exception loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; - , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) + , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) *IF _VFP.STARTMODE <= 1 @@ -384,6 +384,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -412,6 +413,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. l_ShowProgress = .F. l_Recompile = .F. + l_UseTimestamps = .T. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias @@ -465,7 +467,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * Using Win32 Functions in Visual FoxPro * example=103 * Changing file attributes - LPARAMETERS tcFilename, tcAttrib + LPARAMETERS tcFileName, tcAttrib tcAttrib = UPPER(tcAttrib) #DEFINE FILE_ATTRIBUTE_READONLY 1 @@ -481,7 +483,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DECLARE INTEGER GetFileAttributes IN kernel32 STRING tcFileName * read current attributes for this file - dwFileAttributes = GetFileAttributes(tcFilename) + dwFileAttributes = GetFileAttributes(tcFileName) IF dwFileAttributes = -1 * the file does not exist @@ -540,32 +542,32 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF * setting selected attributes - =SetFileAttributes(tcFilename, dwFileAttributes) + =SetFileAttributes(tcFileName, dwFileAttributes) ENDIF ENDPROC PROCEDURE compileFoxProBinary - LPARAMETERS tcFilename + LPARAMETERS tcFileName LOCAL lcType - tcFilename = EVL(tcFilename, THIS.c_OutputFile) - lcType = UPPER(JUSTEXT(tcFilename)) + tcFileName = EVL(tcFileName, THIS.c_OutputFile) + lcType = UPPER(JUSTEXT(tcFileName)) DO CASE CASE lcType = 'VCX' - COMPILE CLASSLIB (tcFilename) + COMPILE CLASSLIB (tcFileName) CASE lcType = 'SCX' - COMPILE FORM (tcFilename) + COMPILE FORM (tcFileName) CASE lcType = 'FRX' - COMPILE REPORT (tcFilename) + COMPILE REPORT (tcFileName) CASE lcType = 'LBX' - COMPILE LABEL (tcFilename) + COMPILE LABEL (tcFileName) CASE lcType = 'DBC' - COMPILE DATABASE (tcFilename) + COMPILE DATABASE (tcFileName) ENDCASE ENDPROC @@ -583,7 +585,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3 #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -682,9 +684,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * se hace desde el directorio del archivo, con lo que las referencias relativas pueden * generar errores de compilación, típicamente los #include. * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar + * tcNoTimestamps (v? IN ) Indica si se deben vacar ('1') o no ['0'] los timestamps de registro *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; - , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile + , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; @@ -692,8 +695,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject - lnCodError = 0 - tcRecompile = EVL(tcRecompile,'1') + lnCodError = 0 + tcRecompile = EVL(tcRecompile,'1') + tcNoTimestamps = EVL(tcNoTimestamps,'0') *SET DELETED ON *SET DATE YMD @@ -723,8 +727,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Ejecución normal THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - *THIS.l_Recompile = (NOT EMPTY(tcRecompile) AND (TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))) THIS.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) + THIS.l_UseTimestamps = (EMPTY(tcNoTimestamps) OR TRANSFORM(tcNoTimestamps) == '0') THIS.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(THIS.c_Foxbin2prg_FullPath,'LOG'))) IF THIS.l_ShowProgress @@ -814,7 +818,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM OTHERWISE lnCodError = -1 ENDCASE - + ELSE IF EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' @@ -857,7 +861,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDCASE CATCH TO toEx - lnCodError = toEx.ErrorNo + lnCodError = toEx.ERRORNO lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) @@ -1559,11 +1563,11 @@ DEFINE CLASS c_conversor_base AS SESSION * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF THIS.writeLog( '' ) THIS.writeLog( C_CONVERTING_FILE_LOC + ' ' + THIS.c_OutputFile + '...' ) @@ -2469,11 +2473,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) ENDPROC @@ -2640,8 +2644,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Validación IF EMPTY(taBloquesExclusion(tnBloquesExclusion,2)) *ERROR 'No se ha encontrado el marcador de fin [' + ta_ID_Bloques(lnPrimerID,2) ; - + '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ; - + '] de la línea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1)) + + '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ; + + '] de la línea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1)) ERROR (TEXTMERGE(C_END_MARKER_NOT_FOUND_LOC)) ENDIF ENDIF @@ -3329,7 +3333,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE insert_Object - LPARAMETERS toClase, toObjeto + LPARAMETERS toClase, toObjeto, toFoxBin2Prg + + #IF .F. + LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' + #ENDIF IF NOT THIS.l_Test *-- Inserto el objeto @@ -3359,7 +3369,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base VALUES ; ( 'WINDOWS' ; , toObjeto._UniqueID ; - , toObjeto._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, toObjeto._TimeStamp, 0 ) ; , toObjeto._Class ; , toObjeto._ClassLib ; , toObjeto._BaseClass ; @@ -3388,10 +3398,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Recorro primero los objetos con ZOrder definido, y luego los demás *-- NOTA: Como consecuencia de una integración de código, puede que se hayan agregado objetos nuevos (desconocidos), *-- pero todo lo demás tiene un ZOrder definido, que es el número de registro original * 100. - LPARAMETERS toClase + LPARAMETERS toClase, toFoxBin2Prg #IF .F. LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -3421,7 +3432,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base IF loObjeto._WriteOrder = 0 AND loObjeto._Nombre == lcObjName N = N + 1 loObjeto._WriteOrder = N - THIS.insert_Object( toClase, loObjeto ) + THIS.insert_Object( toClase, loObjeto, toFoxBin2Prg ) EXIT ENDIF ENDFOR @@ -3431,7 +3442,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Recorro los objetos Desconocidos FOR EACH loObjeto IN toClase._AddObjects FOXOBJECT IF loObjeto._WriteOrder = 0 - THIS.insert_Object( toClase, loObjeto ) + THIS.insert_Object( toClase, loObjeto, toFoxBin2Prg ) ENDIF ENDFOR @@ -3493,13 +3504,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado IF llEsProcedureDeClase *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontró ENDDEFINE en la clase ' ; - + toClase._Nombre + ' (' + loProcedure._Nombre + ')' ; - + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + + toClase._Nombre + ' (' + loProcedure._Nombre + ')' ; + + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC)) ELSE *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontró ENDDEFINE en la clase ' ; - + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; - + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; + + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC)) ENDIF ENDCASE @@ -3851,9 +3862,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base *-- Validación IF EMPTY( toClase._Fin ) *ERROR 'No se ha encontrado el marcador de fin [ENDDEFINE] ' ; - + 'que cierra al marcador de inicio [DEFINE CLASS] ' ; - + 'de la línea ' + TRANSFORM( toClase._Inicio ) + ' ' ; - + 'para el identificador [' + toClase._Nombre + ']' + + 'que cierra al marcador de inicio [DEFINE CLASS] ' ; + + 'de la línea ' + TRANSFORM( toClase._Inicio ) + ' ' ; + + 'para el identificador [' + toClase._Nombre + ']' ERROR (TEXTMERGE(C_ENDDEFINE_MARKER_NOT_FOUND_LOC)) ENDIF @@ -4280,11 +4291,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -4298,7 +4309,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la librería THIS.createClasslib() @@ -4309,7 +4320,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toModulo ) - THIS.escribirArchivoBin( @toModulo, toFoxbin2prg ) + THIS.escribirArchivoBin( @toModulo, toFoxBin2Prg ) CATCH TO toEx @@ -4329,7 +4340,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toModulo, toFoxbin2prg + LPARAMETERS toModulo, toFoxBin2Prg *-- Estructura del objeto toModulo generado: *-- ----------------------------------------------------------------------------------------------------------- *-- Version Versión usada para generar la versión PRG analizada @@ -4397,7 +4408,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4419,8 +4430,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin loClase = toModulo._Clases(I) *-- El dataenvironment debe estar primero, luego lo demás. - IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; - OR X = 2 AND loClase._baseclass == 'dataenvironment' + IF X = 1 AND NOT loClase._BaseClass == 'dataenvironment' ; + OR X = 2 AND loClase._BaseClass == 'dataenvironment' LOOP ENDIF @@ -4451,7 +4462,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin VALUES ; ( 'WINDOWS' ; , loClase._UniqueID ; - , loClase._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loClase._TimeStamp, 0 ) ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -4473,7 +4484,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase, toFoxBin2Prg ) *-- Inserto el COMMENT @@ -4529,8 +4540,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -4569,11 +4580,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -4587,7 +4598,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo el form THIS.createForm() @@ -4598,7 +4609,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toModulo ) - THIS.escribirArchivoBin( @toModulo, toFoxbin2prg ) + THIS.escribirArchivoBin( @toModulo, toFoxBin2Prg ) CATCH TO toEx @@ -4618,7 +4629,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toModulo, toFoxbin2prg + LPARAMETERS toModulo, toFoxBin2Prg *-- Estructura del objeto toModulo generado: *-- ----------------------------------------------------------------------------------------------------------- *-- Version Versión usada para generar la versión PRG analizada @@ -4686,7 +4697,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4708,10 +4719,10 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin FOR I = 1 TO toModulo._Clases_Count loClase = toModulo._Clases(I) - + *-- El dataenvironment debe estar primero, luego lo demás. - IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; - OR X = 2 AND loClase._baseclass == 'dataenvironment' + IF X = 1 AND NOT loClase._BaseClass == 'dataenvironment' ; + OR X = 2 AND loClase._BaseClass == 'dataenvironment' LOOP ENDIF @@ -4742,7 +4753,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin VALUES ; ( 'WINDOWS' ; , loClase._UniqueID ; - , loClase._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loClase._TimeStamp, 0 ) ; , loClase._Class ; , loClase._ClassLoc ; , loClase._BaseClass ; @@ -4764,7 +4775,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase, toFoxBin2Prg ) ENDFOR && I = 1 TO toModulo._Clases_Count ENDFOR && X = 1 TO 2 @@ -4819,8 +4830,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -4866,14 +4877,14 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toProject (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toProject, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toProject, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toProject, @toEx ) #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4886,7 +4897,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo solo la cabecera del proyecto THIS.createProject() @@ -4897,7 +4908,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo de cada clase THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toProject ) - THIS.escribirArchivoBin( @toProject ) + THIS.escribirArchivoBin( @toProject, toFoxBin2Prg ) CATCH TO toEx @@ -4917,10 +4928,11 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toProject + LPARAMETERS toProject, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -4992,7 +5004,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin , .T. ; , loFile._CPID ; , loFile._ID ; - , loFile._TimeStamp ; + , IIF( toFoxBin2Prg.l_UseTimestamps, loFile._TimeStamp, 0 ) ; , loFile._ObjRev ; , UPPER(JUSTSTEM(loFile._Name)) ) ENDFOR @@ -5589,14 +5601,14 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toReport (@! OUT) Objeto generado de clase CL_REPORT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toReport, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toReport, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toReport, @toEx ) #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -5609,7 +5621,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo el reporte THIS.createReport() @@ -5617,7 +5629,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toReport ) - THIS.escribirArchivoBin( @toReport, toFoxbin2prg ) + THIS.escribirArchivoBin( @toReport, toFoxBin2Prg ) CATCH TO loEx @@ -5639,11 +5651,11 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toReport, toFoxbin2prg + LPARAMETERS toReport, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -5655,6 +5667,10 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin *-- Agrego los registros FOR EACH loReg IN toReport FOXOBJECT + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + *-- Ajuste de los tipos de dato FOR I = 1 TO AMEMBERS(laProps, loReg, 0) lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 ) @@ -5692,8 +5708,8 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin USE IN (SELECT("TABLABIN")) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -5987,14 +6003,14 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toTable (@! OUT) Objeto generado de clase CL_TABLE con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toTable, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toTable, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toTable, @toEx ) #IF .F. LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6007,7 +6023,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toTable ) @@ -6255,14 +6271,14 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toDatabase, @toEx ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6275,7 +6291,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la tabla *THIS.createTable() @@ -6283,7 +6299,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toDatabase ) - THIS.escribirArchivoBin( @toDatabase, toFoxbin2prg ) + THIS.escribirArchivoBin( @toDatabase, toFoxBin2Prg ) CATCH TO loEx @@ -6305,11 +6321,11 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toDatabase, toFoxbin2prg + LPARAMETERS toDatabase, toFoxBin2Prg *-- ----------------------------------------------------------------------------------------------------------- #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6319,8 +6335,8 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin toDatabase.updateDBC( THIS.c_OutputFile ) - IF toFoxbin2prg.l_Recompile - toFoxbin2prg.compileFoxProBinary() + IF toFoxBin2Prg.l_Recompile + toFoxBin2Prg.compileFoxProBinary() ENDIF @@ -6425,14 +6441,14 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toMenu (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toMenu, @toEx ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -6445,7 +6461,7 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) - toFoxbin2prg.doBackup( .F., .T., '', '', '' ) + toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) *-- Creo la tabla THIS.createMenu() @@ -6630,11 +6646,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase correspondiente con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) ENDPROC @@ -7951,8 +7967,14 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ******************************************************************************************************************* PROCEDURE write_DefinicionObjetosOLE *-- Crea la definición del tag *< OLE: /> con la información de todos los objetos OLE + LPARAMETERS toFoxBin2Prg + LOCAL lnOLECount, lcOLEChecksum, llOleExistente, loReg + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + #ENDIF + TRY SELECT TABLABIN SET ORDER TO PARENT_OBJ @@ -7960,6 +7982,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND BASECLASS = 'olecontrol' SCATTER MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + lcOLEChecksum = SYS(2007, loReg.OLE, 0, 1) llOleExistente = .F. @@ -8074,11 +8101,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8096,11 +8123,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE SET ORDER TO 0 IN TABLABIN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - THIS.write_DefinicionObjetosOLE() + THIS.write_DefinicionObjetosOLE( toFoxBin2Prg ) *-- Escribo los métodos ordenados lnLastClass = 0 @@ -8113,6 +8140,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN ALL FOR TABLABIN.PLATFORM = "WINDOWS" AND TABLABIN.RESERVED1=="Class" SCATTER MEMO NAME loRegClass + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegClass.TIMESTAMP = 0 + ENDIF + lcObjName = ALLTRIM(loRegClass.OBJNAME) THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) @@ -8136,6 +8168,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) ENDSCAN @@ -8162,6 +8199,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) ENDSCAN @@ -8176,13 +8218,13 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8219,14 +8261,14 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_MODULO con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toModulo, @toEx ) #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -8246,11 +8288,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *toModulo = NULL *toModulo = CREATEOBJECT('CL_MODULO') - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() THIS.get_NombresObjetosOLEPublic( @la_NombresObjsOle ) - THIS.write_DefinicionObjetosOLE() + THIS.write_DefinicionObjetosOLE( toFoxBin2Prg ) *-- Escribo los métodos ordenados lnLastObj = 0 @@ -8279,7 +8321,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg *loRegClass = NULL SCATTER MEMO NAME loRegClass - *toModulo.add_Class( loRegClass ) + lcObjName = ALLTRIM(loRegClass.OBJNAME) THIS.write_ENDDEFINE_SiCorresponde( lnLastClass ) @@ -8303,6 +8345,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios THIS.write_ADD_OBJECTS_WithProperties( @loRegObj ) ENDSCAN @@ -8331,6 +8378,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg WHILE ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.get_ADD_OBJECT_METHODS( @loRegObj, @loRegClass, @lcMethods ) ENDSCAN @@ -8345,13 +8397,13 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8390,11 +8442,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8417,6 +8469,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Obtengo los archivos del proyecto loProject = CREATEOBJECT('CL_PROJECT') SCATTER MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + loProject._HomeDir = ['] + ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.HOMEDIR ) ) + ['] loProject._ServerInfo = loReg.RESERVED2 @@ -8453,6 +8510,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Escaneo el proyecto SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg + + IF NOT toFoxBin2Prg.l_UseTimestamps + loReg.TIMESTAMP = 0 + ENDIF + loReg.NAME = LOWER( ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.NAME ) ) ) loReg.COMMENTS = ALLTRIM( THIS.get_ValueFromNullTerminatedValue( loReg.COMMENTS ) ) @@ -8469,7 +8531,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg ENDSCAN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Directorio de inicio @@ -8656,13 +8718,13 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -8706,11 +8768,11 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -8844,7 +8906,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg ENDFOR - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Directorio de inicio @@ -9028,13 +9090,13 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9083,11 +9145,11 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Objeto generado de clase CL_PROJECT con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -9106,18 +9168,30 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg LOCATE FOR ObjType = 1 IF FOUND() SCATTER MEMO NAME loRegCab + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegCab.TIMESTAMP = 0 + ENDIF ENDIF *-- Dataenvironment LOCATE FOR ObjType = 25 IF FOUND() SCATTER MEMO NAME loRegDataEnv + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegDataEnv.TIMESTAMP = 0 + ENDIF ENDIF *-- Cursor1 (¿puede haber más de 1 cursor?) LOCATE FOR ObjType = 26 IF FOUND() SCATTER MEMO NAME loRegCur + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegCur.TIMESTAMP = 0 + ENDIF ENDIF IF THIS.l_ReportSort_Enabled @@ -9137,7 +9211,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg USE IN (SELECT("TABLABIN_0")) - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Recorro los registros y genero el texto IF VARTYPE(loRegCab) = "O" @@ -9149,6 +9223,11 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg SCAN ALL SCATTER MEMO NAME loRegObj + + IF NOT toFoxBin2Prg.l_UseTimestamps + loRegObj.TIMESTAMP = 0 + ENDIF + THIS.write_DETALLE_REPORTE( @loRegObj ) ENDSCAN @@ -9165,13 +9244,13 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9209,11 +9288,11 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toModulo (@! OUT) Contenido del texto generado * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF DODEFAULT( @toModulo, @toEx ) @@ -9232,7 +9311,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Header loTable = CREATEOBJECT('CL_DBF_TABLE') @@ -9243,13 +9322,13 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9261,11 +9340,11 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg DO CASE CASE toEx.ERRORNO = 13 && Alias not found *toEx.USERVALUE = 'WARNING!!' + CR_LF ; - + 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ; - + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; - + '¡¡ATENCIÓN!!' + CR_LF ; - + 'ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on ' ; - + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)' + + 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ; + + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; + + '¡¡ATENCIÓN!!' + CR_LF ; + + 'ASEGÚRESE DE QUE NO ESTÁ USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS ÍNDICES!! (ej: index on ' ; + + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)' toEx.USERVALUE = TEXTMERGE(C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC) *!* CASE toEx.ErrorNo = 1976 && Cannot resolve backlink @@ -9314,14 +9393,14 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * toDatabase (@! OUT) Objeto generado de clase CL_DBC con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toDatabase, @toEx ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -9334,7 +9413,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN OPEN DATABASE (THIS.c_InputFile) SHARED NOUPDATE - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() *-- Header toDatabase = CREATEOBJECT('CL_DBC') @@ -9345,13 +9424,13 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toModulo = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9389,14 +9468,14 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * totoMenu (@! OUT) Objeto generado de clase CL_MENU con la información leida del texto * toEx (@! OUT) Objeto con información del error - * toFoxbin2prg (v! IN ) Referencia al objeto principal + * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- - LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxbin2prg + LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg DODEFAULT( @toMenu, @toEx ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' - LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF TRY @@ -9414,7 +9493,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg ENDIF *-- Header - C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxbin2prg.get_PROGRAM_HEADER() + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() toMenu = CREATEOBJECT('CL_MENU') toMenu.get_DataFromTablabin() @@ -9425,13 +9504,13 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg IF THIS.l_Test toMenu = C_FB2PRG_CODE ELSE - lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) + lnLen = LEN( toFoxBin2Prg.get_PROGRAM_HEADER() ) DO CASE CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) ) - CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) ; - AND toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + CASE toFoxBin2Prg.doBackup( .F., .T., '', '', '' ) ; + AND toFoxBin2Prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) @@ -9752,7 +9831,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE _ProtectedMethods = '' _MetaData = '' _BaseClass = '' - _TimeStamp = '' + _TimeStamp = 0 _Scale = '' _Defined_PAM = '' _includeFile = '' @@ -15498,7 +15577,7 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE ELSE IF THIS.l_Debug *toConversor.writeLog( REPLICATE(C_TAB,tnNivel) ; - + 'Objeto [' + toObj.CLASS + '] no contiene el objeto oReg (nivel ' + TRANSFORM(tnNivel) + ')' ) + + 'Objeto [' + toObj.CLASS + '] no contiene el objeto oReg (nivel ' + TRANSFORM(tnNivel) + ')' ) toConversor.writeLog( REPLICATE(C_TAB,tnNivel) + TEXTMERGE(C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC) ) ENDIF