From ca168d612450c20d6ef3b56b04d226adcd4ba0d5 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 15 Dec 2013 20:21:16 +0100 Subject: [PATCH 1/3] Changeset: 85 Arreglos --- TESTS/DATOS_READONLY/fb2p_frm_1.sct | Bin 12295 -> 14601 bytes TESTS/DATOS_READONLY/fb2p_frm_1.scx | Bin 4303 -> 4303 bytes TESTS/DATOS_READONLY/fb2p_frm_2.sct | Bin 857 -> 3919 bytes TESTS/DATOS_READONLY/fb2p_frm_2.scx | Bin 1469 -> 1578 bytes TESTS/ut__foxbin2prg.prg | 12 +- foxbin2prg.prg | 628 +++++++++++++++++++++------- 6 files changed, 490 insertions(+), 150 deletions(-) diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct index 53249836eb294239db30a28a3d1f6771edc247db..4e33748d563755e28ca724f3d7cf6334f0304126 100644 GIT binary patch delta 2549 zcmaJ?L2O$^5cPLbw{ha8X)2MVG$fWPKm<1?ArMp~Vmnc+I&tWC6Q~lzVz1*>)_=|a z>)1gcUy4eFgaj)gaVrPZRsuxoI~OhpE^sJEE}+7R0~b^YBxd%1$8qu#S(ZHW=FQH| zydB?s^Ok)o5SZ-=1OmqHz~9ElV?FAd$GX+Y;KuOpNl`9SOOCxf7L7*2IkM^fQZyKE zWGmEKWwhpib21X1t4e{c9C?dV^u=;9*PGSz>=zY9>)F7OA}?3N*V-ZJQO48jpmtc7fX7 zdHQ#X*-!`*7C0x>t6gKS%-8e0>acBH#R8PDz_{EaU8SUuwfGK%#}Hf=SYg)62vTr; zN_6o?_(NSdbsRS}9Bt+ar&tk$O+~_slx>!OpY}wS_jym_9WcuQ7uW3mhPxl%Hfj| z0>@;^9qu(NNh;oqq6@+SyZ|8y!M(A#HqZ*xa&(ZM zEyT>%CAB)D(vonN$3(4|Wl}~?bj}9x!tt0pTa}zy9jVL`(PL_~nI?M&LuOr$DQ&hz zWy!AY&wdSxvJd7;mWXXqR0s@Zk?^9cn0704aZ9A0s7k5ztGl_xtVFfZ;St-dzF=E` zv8TOfL6=~+)Td2mb;8W*fJr^4rRh;Kw1_2YE0xCK;Kdr)w>QJvx~~jC_fdL#2`X`IQxe(0k%K2A@>}p+ zDaG}o=QYP`WXH)`ZWB9P2?0~n?ZfV&Zaj6Pd0mL|K68>6ClcT8T&}S7Hue zjf(c-RQ9{~R?42UtsOk%Dz2oQ@MfxuOVMJM(@e5;$`Z-9*Av_@DY&rrw)Qlt+@?wO z+tB&O^yI{I?$@1)4#iq0-~*C&_n28GoP*Y_P3&15fYqY_)CIGuAS*Wld#a~WqUH7< zPXbmYMm_`UVNXJHoQoPf*h&@Es#z(RjrT4l)o`~OICOjUcK3+-vilQXWT<)h#6`mg z8V^0LNNC#^8EHNU-3S{0DQnG#k9uzV1Wtt4jjz?`XJ1m^g|GPFeZ3pTKRSo% zz3YR|_N^LsHUEdcMIZc3WZihA`JYDo_?J&#H@?#RpHKUpKhnQ${Hgi3`#|;@vhn(di^k{ zP7Oai1|#au$jxK%KhD2@EPnCAtt0W!C=CXmZi7$Mr&Ws78 tsLG?m%?D#~Kdt>c{_9~{^QUO)M5v{trBI`(ywB delta 434 zcmeAyYENKcU@%~xe9lCCqrzjxi3+TfKghF8W@n0JOqg8DWGL*CSdti=Us{x$s$i?2 z=NIbZqc>TXIfaR#Wb$fem&xiZa+BLxvg}ymLh=iMDhznJd{Wa&AS{p6%=8Qp+t|dE zmn%For6dE$F*7mY<#Ne)E=o--0UH{kH+c=$H@flc7RdmJV z2ci*-v%qr2V&0Q4ibXMA1IbMhOBXeNfYU`Zc2p2>BR3nv>% z#W2pF+%MHJSxY*Kk!^CT^v2DeGSw`MnUnd|A}2Q~#ZR7~*b3)8gR|l%o2Vef<0rSO zcEaVvCofYI0b&a##=n~%s2PI1DKgnnW9eimKHKWzSOaGIS_aq7Kd7{_1LgbG>|Md;R7h>z~~N2p{vJ7w5+XFEGpB#l(lgG41n;(~BMq;VjT zlnCO$LE?ar5F8{35s5@9;nW}zaY7s%_|Lu%@9xZWbtilDB)|9BKL2-~|2#8ocP2Px za{U6v*u>fatff&ip0Qj;u{sQsLs7?JnOM4ob!GL=E=^C{dL5QY4&BnZmbVn1V=Ozv zLsv6OJ}-{p^O0*E#~1XBp`y%NJoI)YuTc-a#6vgQH)a*C*Y?kUssEZx$}&Ra|8;V_FOjcw9Q$G?A zJ}^i%p;Wdy%rKcD&931L?}C@$EuHOW%9YuO-43%(o(RG$oCpTP(d40ev1t%_2wVZT zsa6HESTbju(LJ*oM9V(pz2GP~L$&Idg{0ZJX`6m{vzRpdK2x-; znZ;N=XaOPMH{6rOrP)Vn{2jS=He-!oG4LC1vxGEjY!Yo-kXM6sAWJnrhHkT@H2X!3 zr_Nz)J_rE?_zkyNN}B0&Mcd8DePBO0PBlM>#4Il>mhTBY+lkK3!dyo%- zd=oqcZ>Z+S(rspc#gN%d`^6Qp40#POz;>z$rLxswwq?C)O0yR$aOuDgP`8q?X3z?X h;|P8}ku0u^{`v2V#h*9P;x`Mg!yb;YvDdM4e*;a@ZL$CW literal 4303 zcmeH~$!il~7{)(q!L@1?wbq5Gbpxd{nWRY(rO9M!qxmxFOk!Kbos=prxKuqT;)19M zdJ*;JL0s@sVf*` z(_4>Wt*w@+j1_XJV!v*1IO-HE(`z?jrF?ddyw+w&=|SyTB2AHR??w0zOB8Q+1;3X8^)o9RkD04;$-;57Au zM+Q5tuz0di71nND`cV;RH%J46dctXJ^@hpLk!9!}GYH)aPJ+wSYb-`=?G1}MVO_Jt zMhY|y3~-Qo;e;tpSbnw`xf?nL&Vw7&3nwh*gsq`VUks{(5-3wIoUphPX3h~K_d}0? zOW+Rm!U^kf!sNMPWFJ%q`@jk6g%g%=!gBM($Pwr$I18>*FPyNX6V}x(Mk>%W*a=3d z7fx8O6SjN47&!(V2RFe(>V*@Qa>DwoKZmFsbQl~37pQk@5o42}k@Ehi(^iZS}iZnul$DrrHHSnBz%>;VGGIp3ObuJMj*F$@N298iKoG{G} zQ>6Pe_zCm{cm*b@7fx8e9VSb|onquD^bEKPo>4EHux)mjB7LC2U!lK1%TmVHfo9A5 zoekJwvh;ukKY>nw*WerVnhErVW$iFUTDVM%?1Czw50t4FPS|!kOqSl$;4jdhU<#h_ z)>=<_O_uk_cGzKxG(>|(q2u5RcuKuy@?2pmPgLDvI;>}A)JA9@D1kEdgwxpS4Xe7v z9Epfw7om5-V=w`lEmzp^Hr23BBmNQNf8+O6_?}iXwg{{TTR|RF*CV`t)?M8Re*Ndc U!hRC1ezNe}?bAOF_S?7fH@pU4yZ`_I diff --git a/TESTS/DATOS_READONLY/fb2p_frm_2.sct b/TESTS/DATOS_READONLY/fb2p_frm_2.sct index 803343d210fb85749264294f9b8a56e8dcb94770..6a6564f7b3d29cdda1daa732792fcaf6a6f67135 100644 GIT binary patch literal 3919 zcmeHK-EP}96i$J)7sib45xnfy6>Ozxn~Po8a)KCh;viBJZ0lCAGHnx~MS-H?WDm6G z+&TQSD7)(eY%K(s=a=XAV~&nq&yS9dUcmSNzyD?iu=YRPo!_R@`E~E-Uaxl&4F*6% z`s)QzgcgrXief_x^$qgmp!BbqD8cZc+nLd&GQaNGLaoiuOUhPjOGX2!sAW!p7hQjx z&7yASnr!fR+_HY$?bz$Q7`A_Ww-jjLil75U zp_KiF5@$vwRgyhWwU%|$_(!;tY?`_xd}+$P3tU^gB2VL5Dcv+W#w%8|2;#As15ogN z^9I@s&aQLxkrg4E6#<((nMSm#c8K(8GQ~=`Fs?*h(Hp^R6`^PDSj8H}NH{BP$#f&= z4wPhT+h7QN0zJ2NH3tKDbeDmfUog%c7mnuzhN-KDrlz^ciS5f@=<|)FkBs6#=*(s0 z%M{X#%>vqRN|jy>I*S=ooSM-9rkSMdxx~W3Ma(%>W>$bO6Zr#-7^OJ7+WLrZ$#XR? zOtu2jSU|mep0FKk%VPWeCd8(3yrf(wi9V_6#5!LSRb^{dAx{%A`}a+%yM!n1Is$#% z;*QINt)0Hxgf8ct&JyS3isTboJ(!F@fQjHj`epbQdsk9T#7p(zKTI*n9~>!uJLucb z6v{EI?4?;q>4tEgtVyxL%nrfG-Pah{Dy*oXtBeH3sF&25Zm4gdG3>l{Q;j$mTNur< z#>K9cCQvUs6yTG57D^K2VRk;3()0ly+?2Z=W7qgkM#TzuJAV?b_4}|t_@hUpB+niX zzR$&GLyE;pin_GwhiKiTA?Glp2@$VenJOltE-;W7l0|r}6W8tdp?&wxL)#EUO#gk@ z!NVC8&qWou)EiV^br=~fz!57kjBK+sN#14rz9Hxa^aJ?u+PkH7>}XAQt@{jjyf{KE zuq#uS$Lhz?4xKz{52o6jeY^@Kn!wfO1PJDtAuM{bN#MyY2l0LeY3GD36;ST3~=rUGUQuL52OTp`ONSV-Q3vVgsZX#p38Hh|%P8RD^Ljf#9N@QI)o zlx|(f9=sIpCBa8t*f0N5`-BuZ<$D_YT^lz$6Lu!4x!x(bD*UxtK;-EMcDd*IO&u(C z&)x@9&q5TcD}bsDFakor=URhl9!$*yHE<91gBNW9;EpZ?hqu}x>lu|BRsaazQsQ4r zUa<}LX1&ExTGAYzOlF)~#oL1!Z_RLWT=t*?faf^}kjV4C3Q1mK!t@Jq(X=ugob~P3 z@Z%)EZSw%WdVg5}SDrlLY^DFGf#8}|apUU*p|}=9e$*4)2k`Bk^?RrN-VndI-#ft% H=$(H6UN*;W delta 68 zcmX>vcax2Sfq^-afq{W>qu?jTi3*&PnVEhlGZ?$%I~S!UmZU1!D(Hpi@p3sQ7L;V> X=K;A&Zuv#IhDwtsa!5|r#V7>;#+wOk diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index ac937ce..caffe54 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -287,7 +287,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_foxuser.frx' + lc_File = 'FB2P_FOXUSER.FRX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) @@ -361,7 +361,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_foxuser.lbx' + lc_File = 'FB2P_FOXUSER.LBX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) @@ -433,7 +433,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_frm_1.scx' + lc_File = 'FB2P_FRM_1.SCX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) @@ -515,7 +515,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_test.vcx' + lc_File = 'FB2P_TEST.VCX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) @@ -597,7 +597,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_test_bug_metodo_movido.vcx' + lc_File = 'FB2P_TEST_BUG_METODO_MOVIDO.VCX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) @@ -679,7 +679,7 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg *-- DATOS DE ENTRADA STORE 0 TO lnCodError - lc_File = 'fb2p_test_bug_estructural.vcx' + lc_File = 'FB2P_TEST_BUG_ESTRUCTURAL.VCX' lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lcTipoBinario = UPPER( JUSTEXT( lc_OutputFile ) ) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index bf43637..22872d2 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -629,6 +629,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -945,27 +946,70 @@ DEFINE CLASS c_conversor_base AS SESSION ******************************************************************************************************************* PROCEDURE doBackup - LOCAL lcNext_Bak, lcExt_X, lcExt_T - lcNext_Bak = THIS.getNext_BAK( THIS.c_OutputFile ) - lcExt_X = JUSTEXT( THIS.c_OutputFile ) - lcExt_T = LEFT(lcExt_X,2) + 'T' + LPARAMETERS toEx, tlRelanzarError, tcBakFile_1, tcBakFile_2, tcBakFile_3 - DO CASE - CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X - IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) ) - THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T ) + TRY + LOCAL lcNext_Bak, lcExt_1, lcExt_2, lcExt_3 + STORE '' TO tcBakFile_1, tcBakFile_2, tcBakFile_3 + lcNext_Bak = THIS.getNext_BAK( THIS.c_OutputFile ) + lcExt_1 = JUSTEXT( THIS.c_OutputFile ) + tcBakFile_1 = FORCEEXT(THIS.c_OutputFile, lcExt_1 + lcNext_Bak) - COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_X)) TO (FORCEEXT(THIS.c_OutputFile, lcExt_X + lcNext_Bak)) + DO CASE + CASE lcExt_1 = 'DBF' + *-- DBF + lcExt_2 = 'FPT' + lcExt_3 = 'CDX' + tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) + tcBakFile_3 = FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak) - IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_T) ) - COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_T)) TO (FORCEEXT(THIS.c_OutputFile,lcExt_T + lcNext_Bak)) + CASE lcExt_1 = 'DBC' + *-- DBC + lcExt_2 = 'DCT' + lcExt_3 = 'DCX' + tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) + tcBakFile_3 = FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak) + + OTHERWISE + *-- PJX, VCX, SCX, FRX, LBX, MNX + lcExt_2 = LEFT(lcExt_1,2) + 'T' + tcBakFile_2 = FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) + + ENDCASE + + IF NOT EMPTY(lcExt_1) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) + IF EMPTY(lcExt_3) + THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_1) + '/' + lcExt_2 ) + ELSE + THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_1) + '/' + lcExt_2 + '/' + lcExt_3 ) + ENDIF + + *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_1 + lcNext_Bak) ) + RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( tcBakFile_1 ) + + IF NOT EMPTY(lcExt_2) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) + *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) ) + RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( tcBakFile_2 ) + ENDIF + + IF NOT EMPTY(lcExt_3) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) + *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak) ) + RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( tcBakFile_3 ) ENDIF ENDIF - - OTHERWISE - ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!' - ENDCASE + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + IF tlRelanzarError + THROW + ENDIF + + ENDTRY + + RETURN ENDPROC @@ -1311,6 +1355,274 @@ DEFINE CLASS c_conversor_base AS SESSION ENDFUNC + ******************************************************************************************************************* + PROCEDURE sortPropsAndValues_SetAndGetSCXPropNames + *-------------------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcOperation (!v IN ) Operación a realizar ("SETNAME" o "GETNAME") + * tcPropName (!v IN ) Nombre de la propiedad + *-------------------------------------------------------------------------------------------------------------- + LPARAMETERS tcOperation, tcPropName + LOCAL lcPropName, lnPropType + lcPropName = '' + tcOperation = UPPER(EVL(tcOperation,'')) + lnPropType = 0 && System property + + DO CASE + CASE tcOperation == 'GETNAME' + lcPropName = SUBSTR(tcPropName,5) + CASE NOT tcOperation == 'SETNAME' + ERROR 'Operación no reconocida. Solo re reconoce SETNAME y GETNAME.' + CASE lcPropName == 'ButtonCount' + lcPropName = 'A005' + lcPropName + CASE lcPropName == 'ColumnCount' + lcPropName = 'A010' + lcPropName + CASE lcPropName == 'Value' + lcPropName = 'A015' + lcPropName + CASE lcPropName == 'Comment' + lcPropName = 'A020' + lcPropName + CASE lcPropName == 'ControlSource' + lcPropName = 'A025' + lcPropName + CASE lcPropName == 'DataSession' + lcPropName = 'A030' + lcPropName + CASE lcPropName == 'DeleteMark' + lcPropName = 'A035' + lcPropName + CASE lcPropName == 'ScaleMode' + lcPropName = 'A040' + lcPropName + CASE lcPropName == 'Tag' + lcPropName = 'A045' + lcPropName + CASE lcPropName == 'Top' + lcPropName = 'A050' + lcPropName + CASE lcPropName == 'Left' + lcPropName = 'A055' + lcPropName + CASE lcPropName == 'Height' + lcPropName = 'A060' + lcPropName + CASE lcPropName == 'Width' + lcPropName = 'A065' + lcPropName + CASE lcPropName == 'MaxLength' + lcPropName = 'A070' + lcPropName + CASE lcPropName == 'Alias' + lcPropName = 'A075' + lcPropName + CASE lcPropName == 'BufferModeOverride' + lcPropName = 'A080' + lcPropName + CASE lcPropName == 'Order' + lcPropName = 'A085' + lcPropName + CASE lcPropName == 'OrderDirection' + lcPropName = 'A090' + lcPropName + CASE lcPropName == 'CursorSource' + lcPropName = 'A095' + lcPropName + CASE lcPropName == 'Exclusive' + lcPropName = 'A100' + lcPropName + CASE lcPropName == 'Filter' + lcPropName = 'A105' + lcPropName + CASE lcPropName == 'Panel' + lcPropName = 'A110' + lcPropName + CASE lcPropName == 'ReadOnly' + lcPropName = 'A115' + lcPropName + CASE lcPropName == 'RecordSource' + lcPropName = 'A120' + lcPropName + CASE lcPropName == 'RecordSourceType' + lcPropName = 'A125' + lcPropName + CASE lcPropName == 'NoDataOnLoad' + lcPropName = 'A130' + lcPropName + CASE lcPropName == 'OpenViews' + lcPropName = 'A135' + lcPropName + CASE lcPropName == 'AutoOpenTables' + lcPropName = 'A140' + lcPropName + CASE lcPropName == 'AutoCloseTables' + lcPropName = 'A145' + lcPropName + CASE lcPropName == 'InitialSelectedAlias' + lcPropName = 'A150' + lcPropName + CASE lcPropName == 'DataSource' + lcPropName = 'A155' + lcPropName + CASE lcPropName == 'DataSourceType ' + lcPropName = 'A160' + lcPropName + CASE lcPropName == 'Desktop' + lcPropName = 'A165' + lcPropName + CASE lcPropName == 'ShowWindow' + lcPropName = 'A170' + lcPropName + CASE lcPropName == 'ScrollBars' + lcPropName = 'A175' + lcPropName + CASE lcPropName == 'ShowInTaskBar' + lcPropName = 'A180' + lcPropName + CASE lcPropName == 'DoCreate' + lcPropName = 'A185' + lcPropName + CASE lcPropName == 'Tag' + lcPropName = 'A190' + lcPropName + CASE lcPropName == 'OLEDragMode' + lcPropName = 'A195' + lcPropName + CASE lcPropName == 'OLEDragPicture' + lcPropName = 'A200' + lcPropName + CASE lcPropName == 'OLEDropMode' + lcPropName = 'A205' + lcPropName + CASE lcPropName == 'OLEDropEffects' + lcPropName = 'A210' + lcPropName + CASE lcPropName == 'ShowTips' + lcPropName = 'A215' + lcPropName + CASE lcPropName == 'BufferMode' + lcPropName = 'A220' + lcPropName + CASE lcPropName == 'AutoCenter' + lcPropName = 'A225' + lcPropName + CASE lcPropName == 'AutoSize' + lcPropName = 'A230' + lcPropName + CASE lcPropName == 'WordWrap' + lcPropName = 'A235' + lcPropName + CASE lcPropName == 'Picture' + lcPropName = 'A240' + lcPropName + CASE lcPropName == 'BackStyle' + lcPropName = 'A245' + lcPropName + CASE lcPropName == 'BorderStyle' + lcPropName = 'A250' + lcPropName + CASE lcPropName == 'BorderWidth' + lcPropName = 'A255' + lcPropName + CASE lcPropName == 'Caption' + lcPropName = 'A260' + lcPropName + CASE lcPropName == 'ControlBox' + lcPropName = 'A265' + lcPropName + CASE lcPropName == 'Closable' + lcPropName = 'A270' + lcPropName + CASE lcPropName == 'Curvature' + lcPropName = 'A275' + lcPropName + CASE lcPropName == 'FontBold' + lcPropName = 'A280' + lcPropName + CASE lcPropName == 'FontCondense' + lcPropName = 'A285' + lcPropName + CASE lcPropName == 'FontExtend' + lcPropName = 'A290' + lcPropName + CASE lcPropName == 'FontItalic' + lcPropName = 'A295' + lcPropName + CASE lcPropName == 'FontName' + lcPropName = 'A300' + lcPropName + CASE lcPropName == 'FontOutline' + lcPropName = 'A305' + lcPropName + CASE lcPropName == 'FontShadow' + lcPropName = 'A310' + lcPropName + CASE lcPropName == 'FontSize' + lcPropName = 'A315' + lcPropName + CASE lcPropName == 'FontStrikethru' + lcPropName = 'A320' + lcPropName + CASE lcPropName == 'FontUnderline' + lcPropName = 'A325' + lcPropName + CASE lcPropName == 'HalfHeightCaption' + lcPropName = 'A330' + lcPropName + CASE lcPropName == 'Margin' + lcPropName = 'A335' + lcPropName + CASE lcPropName == 'MaxButton' + lcPropName = 'A340' + lcPropName + CASE lcPropName == 'MinButton' + lcPropName = 'A345' + lcPropName + CASE lcPropName == 'Movable' + lcPropName = 'A350' + lcPropName + CASE lcPropName == 'MaxHeight' + lcPropName = 'A355' + lcPropName + CASE lcPropName == 'MaxWidth' + lcPropName = 'A360' + lcPropName + CASE lcPropName == 'MinHeight' + lcPropName = 'A365' + lcPropName + CASE lcPropName == 'MinWidth' + lcPropName = 'A370' + lcPropName + CASE lcPropName == 'MaxTop' + lcPropName = 'A375' + lcPropName + CASE lcPropName == 'MaxLeft' + lcPropName = 'A380' + lcPropName + CASE lcPropName == 'MDIForm' + lcPropName = 'A385' + lcPropName + CASE lcPropName == 'MousePointer' + lcPropName = 'A390' + lcPropName + CASE lcPropName == 'MouseIcon' + lcPropName = 'A395' + lcPropName + CASE lcPropName == 'Visible' + lcPropName = 'A400' + lcPropName + CASE lcPropName == 'ClipControls' + lcPropName = 'A405' + lcPropName + CASE lcPropName == 'DrawMode' + lcPropName = 'A410' + lcPropName + CASE lcPropName == 'DrawStyle' + lcPropName = 'A415' + lcPropName + CASE lcPropName == 'DrawWidth' + lcPropName = 'A420' + lcPropName + CASE lcPropName == 'FillStyle' + lcPropName = 'A425' + lcPropName + CASE lcPropName == 'Enabled' + lcPropName = 'A430' + lcPropName + CASE lcPropName == 'Icon' + lcPropName = 'A435' + lcPropName + CASE lcPropName == 'KeyPreview' + lcPropName = 'A440' + lcPropName + CASE lcPropName == 'TabIndex' + lcPropName = 'A445' + lcPropName + CASE lcPropName == 'TabStop' + lcPropName = 'A450' + lcPropName + CASE lcPropName == 'TitleBar' + lcPropName = 'A455' + lcPropName + CASE lcPropName == 'WindowType' + lcPropName = 'A460' + lcPropName + CASE lcPropName == 'WindowState' + lcPropName = 'A465' + lcPropName + CASE lcPropName == 'LockScreen' + lcPropName = 'A470' + lcPropName + CASE lcPropName == 'AlwaysOnTop' + lcPropName = 'A475' + lcPropName + CASE lcPropName == 'AlwaysOnBottom' + lcPropName = 'A480' + lcPropName + CASE lcPropName == 'SizeBox' + lcPropName = 'A485' + lcPropName + CASE lcPropName == 'SpecialEffect' + lcPropName = 'A490' + lcPropName + CASE lcPropName == 'ZoomBox' + lcPropName = 'A495' + lcPropName + CASE lcPropName == 'ZOrderSet' + lcPropName = 'A500' + lcPropName + CASE lcPropName == 'HelpContextID' + lcPropName = 'A505' + lcPropName + CASE lcPropName == 'WhatsThisHelpID' + lcPropName = 'A510' + lcPropName + CASE lcPropName == 'WhatsThisHelp' + lcPropName = 'A515' + lcPropName + CASE lcPropName == 'WhatsThisButton' + lcPropName = 'A520' + lcPropName + CASE lcPropName == 'RightToLeft' + lcPropName = 'A525' + lcPropName + CASE lcPropName == 'DefOleLCID' + lcPropName = 'A530' + lcPropName + CASE lcPropName == 'MacDesktop' + lcPropName = 'A535' + lcPropName + CASE lcPropName == 'ColorSource' + lcPropName = 'A540' + lcPropName + CASE lcPropName == 'ForeColor' + lcPropName = 'A545' + lcPropName + CASE lcPropName == 'DisableForeColor' + lcPropName = 'A550' + lcPropName + CASE lcPropName == 'BackColor' + lcPropName = 'A555' + lcPropName + CASE lcPropName == 'FillColor' + lcPropName = 'A560' + lcPropName + CASE lcPropName == 'HScrollSmallChange' + lcPropName = 'A565' + lcPropName + CASE lcPropName == 'VScrollSmallChange' + lcPropName = 'A570' + lcPropName + CASE lcPropName == 'ContinuousScroll' + lcPropName = 'A575' + lcPropName + CASE lcPropName == 'Themes' + lcPropName = 'A580' + lcPropName + CASE lcPropName == 'BindControls' + lcPropName = 'A585' + lcPropName + CASE lcPropName == 'AllowOutput' + lcPropName = 'A590' + lcPropName + CASE lcPropName == 'Dockable' + lcPropName = 'A595' + lcPropName + CASE lcPropName == 'Name' + lnPropType = 1 && System "Name" property + lcPropName = 'Z000' + lcPropName + OTHERWISE + lnPropType = 2 && User property + lcPropName = 'A999' + lcPropName + ENDCASE + + RETURN lcPropName + ENDPROC + + ******************************************************************************************************************* PROCEDURE sortPropsAndValues * KNOWLEDGE BASE: @@ -1330,89 +1642,120 @@ DEFINE CLASS c_conversor_base AS SESSION EXTERNAL ARRAY taPropsAndValues TRY - LOCAL I, X, lnArrayCols, laPropsAndValues(1,2) + LOCAL I, X, lnArrayCols, laPropsAndValues(1,2), lcPropName lnArrayCols = ALEN( taPropsAndValues, 2 ) DIMENSION laPropsAndValues( tnPropsAndValues_Count, lnArrayCols ) ACOPY( taPropsAndValues, laPropsAndValues ) - IF m.tnSortType >= 1 - * CON SORT: - * - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final - FOR I = 1 TO m.tnPropsAndValues_Count - IF '.' $ laPropsAndValues(I,1) - IF m.tnSortType = 2 AND JUSTEXT( laPropsAndValues(I,1) ) == 'Name' - laPropsAndValues(I,1) = JUSTSTEM( laPropsAndValues(I,1) ) + '.' + CHR(255) + 'Name' - ENDIF + WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG' + IF m.tnSortType >= 1 + * CON SORT: + * - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final + FOR I = 1 TO m.tnPropsAndValues_Count + IF '.' $ laPropsAndValues(I,1) + *IF m.tnSortType = 2 AND JUSTEXT( laPropsAndValues(I,1) ) == 'Name' + * laPropsAndValues(I,1) = JUSTSTEM( laPropsAndValues(I,1) ) + '.' + CHR(255) + 'Name' + *ENDIF - laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1) - ELSE - IF m.tnSortType = 2 AND laPropsAndValues(I,1) == 'Name' - laPropsAndValues(I,1) = CHR(255) + 'Name' - ENDIF + *laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1) + IF m.tnSortType = 2 + laPropsAndValues(I,1) = 'B' + JUSTSTEM(laPropsAndValues(I,1)) + '.' ; + + .sortPropsAndValues_SetAndGetSCXPropNames( 'SETNAME', JUSTEXT(laPropsAndValues(I,1)) ) + ELSE + laPropsAndValues(I,1) = 'B' + laPropsAndValues(I,1) + ENDIF + ELSE + *IF m.tnSortType = 2 AND laPropsAndValues(I,1) == 'Name' + * laPropsAndValues(I,1) = CHR(255) + 'Name' + *ENDIF - laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1) + *laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1) + IF m.tnSortType = 2 + laPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'SETNAME', laPropsAndValues(I,1) ) + ELSE + laPropsAndValues(I,1) = 'A' + laPropsAndValues(I,1) + ENDIF + ENDIF + ENDFOR + + IF .l_PropSort_Enabled + ASORT( laPropsAndValues, 1, -1, 0, 1) ENDIF - ENDFOR - IF THIS.l_PropSort_Enabled - ASORT( laPropsAndValues, 1, -1, 0, 1) + + FOR I = 1 TO m.tnPropsAndValues_Count + *taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) && Quitar el carácter agregado + + *-- Quitar caracteres agregados antes del SORT + IF '.' $ laPropsAndValues(I,1) + IF m.tnSortType = 2 + laPropsAndValues(I,1) = JUSTSTEM( SUBSTR( laPropsAndValues(I,1), 2 ) ) + '.' ; + + .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', JUSTEXT(laPropsAndValues(I,1)) ) + ELSE + taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) + ENDIF + ELSE + IF m.tnSortType = 2 + laPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', laPropsAndValues(I,1) ) + ELSE + taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) + ENDIF + ENDIF + + taPropsAndValues(I,2) = laPropsAndValues(I,2) + + IF lnArrayCols >= 3 + taPropsAndValues(I,3) = laPropsAndValues(I,3) + ENDIF + + *DO CASE + *CASE m.tnSortType <> 2 + * *-- Saltear + *CASE taPropsAndValues(I,1) == CHR(255) + 'Name' + * taPropsAndValues(I,1) = 'Name' + *CASE JUSTEXT( taPropsAndValues(I,1) ) == CHR(255) + 'Name' + * taPropsAndValues(I,1) = JUSTSTEM( taPropsAndValues(I,1) ) + '.Name' + *ENDCASE + ENDFOR + + ELSE && m.tnSortType = 0 + *-- SIN SORT: Creo 2 arrays, el bueno y el temporal, y al terminar agrego el temporal al bueno. + *-- Debo separar las props.normales de las de los objetos (ocurre cuando es un ADD OBJECT) + X = 0 + + *-- PRIMERO las que no tienen punto + FOR I = 1 TO m.tnPropsAndValues_Count + IF EMPTY( laPropsAndValues(I,1) ) + LOOP + ENDIF + + IF NOT '.' $ laPropsAndValues(I,1) + X = X + 1 + taPropsAndValues(X,1) = laPropsAndValues(I,1) + taPropsAndValues(X,2) = laPropsAndValues(I,2) + IF lnArrayCols >= 3 + taPropsAndValues(X,3) = laPropsAndValues(I,3) + ENDIF + ENDIF + ENDFOR + + *-- LUEGO las demás props. + FOR I = 1 TO m.tnPropsAndValues_Count + IF EMPTY( laPropsAndValues(I,1) ) + LOOP + ENDIF + + IF '.' $ laPropsAndValues(I,1) + X = X + 1 + taPropsAndValues(X,1) = laPropsAndValues(I,1) + taPropsAndValues(X,2) = laPropsAndValues(I,2) + IF lnArrayCols >= 3 + taPropsAndValues(X,3) = laPropsAndValues(I,3) + ENDIF + ENDIF + ENDFOR ENDIF - - - FOR I = 1 TO m.tnPropsAndValues_Count - taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) && Quitar el carácter agregado - taPropsAndValues(I,2) = laPropsAndValues(I,2) - IF lnArrayCols >= 3 - taPropsAndValues(I,3) = laPropsAndValues(I,3) - ENDIF - - DO CASE - CASE m.tnSortType <> 2 - *-- Saltear - CASE taPropsAndValues(I,1) == CHR(255) + 'Name' - taPropsAndValues(I,1) = 'Name' - CASE JUSTEXT( taPropsAndValues(I,1) ) == CHR(255) + 'Name' - taPropsAndValues(I,1) = JUSTSTEM( taPropsAndValues(I,1) ) + '.Name' - ENDCASE - ENDFOR - - ELSE && m.tnSortType = 0 - *-- SIN SORT: Creo 2 arrays, el bueno y el temporal, y al terminar agrego el temporal al bueno. - *-- Debo separar las props.normales de las de los objetos (ocurre cuando es un ADD OBJECT) - X = 0 - - *-- PRIMERO las que no tienen punto - FOR I = 1 TO m.tnPropsAndValues_Count - IF EMPTY( laPropsAndValues(I,1) ) - LOOP - ENDIF - - IF NOT '.' $ laPropsAndValues(I,1) - X = X + 1 - taPropsAndValues(X,1) = laPropsAndValues(I,1) - taPropsAndValues(X,2) = laPropsAndValues(I,2) - IF lnArrayCols >= 3 - taPropsAndValues(X,3) = laPropsAndValues(I,3) - ENDIF - ENDIF - ENDFOR - - *-- LUEGO las demás props. - FOR I = 1 TO m.tnPropsAndValues_Count - IF EMPTY( laPropsAndValues(I,1) ) - LOOP - ENDIF - - IF '.' $ laPropsAndValues(I,1) - X = X + 1 - taPropsAndValues(X,1) = laPropsAndValues(I,1) - taPropsAndValues(X,2) = laPropsAndValues(I,2) - IF lnArrayCols >= 3 - taPropsAndValues(X,3) = laPropsAndValues(I,3) - ENDIF - ENDIF - ENDFOR - ENDIF + ENDWITH && THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG' *-- VER ESTO SI HACE FALTA, SOBRE LO DE PONER LOS METODOS AL FINAL Y ADAPTAR *-- Agregar propiedades primero @@ -3253,7 +3596,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 ) - THIS.doBackup() + THIS.doBackup( .F., .T. ) *-- Creo la librería THIS.createClasslib() @@ -3517,7 +3860,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 ) - THIS.doBackup() + THIS.doBackup( .F., .T. ) *-- Creo el form THIS.createForm() @@ -3686,59 +4029,56 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin THIS.insert_AllObjects( @loClase ) - - IF .F. &&NOT loClase._BaseClass == 'dataenvironment' - *-- Inserto el COMMENT - INSERT INTO TABLABIN ; - ( PLATFORM ; - , UNIQUEID ; - , TIMESTAMP ; - , CLASS ; - , CLASSLOC ; - , BASECLASS ; - , OBJNAME ; - , PARENT ; - , PROPERTIES ; - , PROTECTED ; - , METHODS ; - , OLE ; - , OLE2 ; - , RESERVED1 ; - , RESERVED2 ; - , RESERVED3 ; - , RESERVED4 ; - , RESERVED5 ; - , RESERVED6 ; - , RESERVED7 ; - , RESERVED8 ; - , USER) ; - VALUES ; - ( 'COMMENT' ; - , 'RESERVED' ; - , loClase._TimeStamp ; - , '' ; - , '' ; - , '' ; - , loClase._ObjName ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , IIF(loClase._OlePublic, 'OLEPublic', '') ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ) - ENDIF - ENDFOR && I = 1 TO toModulo._Clases_Count + *-- Inserto el COMMENT final + INSERT INTO TABLABIN ; + ( PLATFORM ; + , UNIQUEID ; + , TIMESTAMP ; + , CLASS ; + , CLASSLOC ; + , BASECLASS ; + , OBJNAME ; + , PARENT ; + , PROPERTIES ; + , PROTECTED ; + , METHODS ; + , OLE ; + , OLE2 ; + , RESERVED1 ; + , RESERVED2 ; + , RESERVED3 ; + , RESERVED4 ; + , RESERVED5 ; + , RESERVED6 ; + , RESERVED7 ; + , RESERVED8 ; + , USER) ; + VALUES ; + ( 'COMMENT' ; + , 'RESERVED' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ) + USE IN (SELECT("TABLABIN")) COMPILE FORM (THIS.c_OutputFile) @@ -3798,7 +4138,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 ) - THIS.doBackup() + THIS.doBackup( .F., .T. ) *-- Creo solo la cabecera del proyecto THIS.createProject() @@ -4504,7 +4844,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 ) - THIS.doBackup() + THIS.doBackup( .F., .T. ) *-- Creo el reporte THIS.createReport() From ee3fc867e5c9434c648cb4a154d53cecbfec31e1 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 15 Dec 2013 20:26:35 +0100 Subject: [PATCH 2/3] Changeset: 86 arreglos --- TESTS/DATOS_READONLY/fb2p_dbc.dbc | Bin 0 -> 6657 bytes TESTS/DATOS_READONLY/fb2p_dbc.dct | Bin 0 -> 27968 bytes TESTS/DATOS_READONLY/fb2p_dbc.dcx | Bin 0 -> 5632 bytes ...foxbin2prg__c_conversor_base__doBackup.PRG | 122 ++++++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.dbc create mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.dct create mode 100644 TESTS/DATOS_READONLY/fb2p_dbc.dcx create mode 100644 TESTS/ut__foxbin2prg__c_conversor_base__doBackup.PRG diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc new file mode 100644 index 0000000000000000000000000000000000000000..c72c78c6dc236ac7bfec11282bef7b53c88a5fbf GIT binary patch literal 6657 zcmd^@NsH7#6oBKnjLVGszLv{?NA(|!-96A^PdAxXm{X`EHEpyzX(~xONB@Hd51thC z;!Q+EL`3l9RYXL@pW=I|Om|hP5ie6E_?o=D+NdwD>ebR$=I7=Y9LKpl^9-~qvs)df zef>tG)@|0Iq`3vuHu%ZXS#%rAW%>3g<)VFewbO8FyP$lx+!$<8zP#9i@R^)9tB%*UnkQq=aWS7%8r9l=Y@y(=Xp0i|hBuI#=3gk+b za29rW60k7mEL}-*9)O2U2}1sYNA!m&f^ndFvI^Pu@3J5>g-8fu9fwDP#0BTikaad> zameBzVyOvKghY`bam7K%F7^9jOygwWbJnN4mxQbz`fDc0q(1f_A&3My3rPfRg0t3( z{3w)KSTJ$3KoMOR)=tnBNKg3E0$zWFfUW z;02)yiPKbtv^^)MK+b89e$>m@y1|7}jO$oWfy6_M>dBA|vt-=FyfFoGFXXA~+3Q>^uLtfG#!-%s0no}Ox3L8T3YKS664z1rsMrlL< literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dct b/TESTS/DATOS_READONLY/fb2p_dbc.dct new file mode 100644 index 0000000000000000000000000000000000000000..078324e3061dcad1353b30351bd34711b24d2ee1 GIT binary patch literal 27968 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 BOsD_= literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dcx b/TESTS/DATOS_READONLY/fb2p_dbc.dcx new file mode 100644 index 0000000000000000000000000000000000000000..2580acb6212a0e58e8703c3e26081f50c5bab040 GIT binary patch literal 5632 zcmeHLTTc@~6rNrw3sS685KyTI2096mYK(72p(Yp*gN?=qvzgtQmW6g_vo~5wNW8x* zk3RTM^wD^WCdSK);_Y|f>~?zziGe4QmQFI+Gc#w;p39u`ofZT^Z3tk?S6j4+miB-T zIH7KbyQPD?2jc?354OGW$+x`?Ks4GL3ROK z`!>OnZ;UUU`NG?d)sNd$3wZ#6D7OZI8=1v%4eL}j6*7UCv`l5wENK+YE!;{kj#oBR zT%Z$R^4daXawa{O&ZK9?CtAoC2icTRL;X*9BX!}5Li5C3Wko^_LaRsn{^YS40iXv| zKisIBWms5OSoLV%pIkRyD!ZHd`uIV}aj)A0Joj<<=TsyT37i6@lh97U)#Lr8F<5G9 z8xMf;UMe_+T3Znd)MSLIip{f_N>;9#8I8%46_>DK;xI_Kv3IU9?*wb{9|S8yrA6)^m*Th)CItW2wuWl~NjK z(kV3sb^3i=u*(<#w(CR1YRPBqpjw^fxDYRq60OW5GTh(|FU%bsxO z3scifRXL_}u{tdz>;Jm=mXq;*J{$fXs57>yruV>r+y4#xxBqK* zdrcqWJsHr!TbSza|9Rg<{?71lI27^^f}zme*gbe3K7bG5qvU(EnR<41Hu)O8L2uDJ z^f>tneMC=V(c}m8BpFYBMqkiZ^bOrfen&sh7W#>Pq2K5a`ipi~W9;P~n06O)5I8F6 e=wY9WS02Pwfz92k0F{GCF4ELNq5@EjpzsgpS#jS0 literal 0 HcmV?d00001 diff --git a/TESTS/ut__foxbin2prg__c_conversor_base__doBackup.PRG b/TESTS/ut__foxbin2prg__c_conversor_base__doBackup.PRG new file mode 100644 index 0000000..8deb05e --- /dev/null +++ b/TESTS/ut__foxbin2prg__c_conversor_base__doBackup.PRG @@ -0,0 +1,122 @@ +DEFINE CLASS ut__foxbin2prg__c_conversor_base__doBackup AS FxuTestCase OF FxuTestCase.prg + + #IF .F. + LOCAL THIS AS ut__foxbin2prg__c_conversor_base__doBackup OF ut__foxbin2prg__c_conversor_base__doBackup.PRG + #ENDIF + + #DEFINE C_FB2P_VALUE_I '' + #DEFINE C_FB2P_VALUE_F '' + #DEFINE CR_LF CHR(13) + CHR(10) + #DEFINE C_CR CHR(13) + #DEFINE C_LF CHR(10) + #DEFINE C_TAB CHR(9) + #DEFINE C_PROC 'PROCEDURE' + #DEFINE C_ENDPROC 'ENDPROC' + #DEFINE C_TEXT 'TEXT' + #DEFINE C_ENDTEXT 'ENDTEXT' + #DEFINE C_IF_F '#IF .F.' + #DEFINE C_ENDIF '#ENDIF' + #DEFINE C_DEFINE_CLASS 'DEFINE CLASS' + #DEFINE C_ENDDEFINE_CLASS 'ENDDEFINE' + icObj = NULL + + + ******************************************************************************************************************************************* + FUNCTION SETUP + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + LOCAL loObj AS c_conversor_base OF "FOXBIN2PRG.PRG" + SET PROCEDURE TO 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + oFXU_LIB = CREATEOBJECT('CL_FXU_CONFIG') + oFXU_LIB.setup_comun() + + THIS.icObj = NEWOBJECT("c_conversor_bin_a_prg", "FOXBIN2PRG.PRG") + loObj = THIS.icObj + loObj.l_Test = .T. + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION TearDown + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + THIS.icObj = NULL + + IF VARTYPE(oFXU_LIB) = "O" + oFXU_LIB.teardown_comun() + oFXU_LIB = NULL + ENDIF + RELEASE PROCEDURE 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Evaluate_results + LPARAMETERS toEx AS EXCEPTION, tnCodError_Esperado, tcBackFile_1, tcBackFile_2, tcBackFile_3 + + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + + IF PCOUNT() = 0 + THIS.messageout( "* Support method, not a valid test." ) + RETURN .T. + ENDIF + + IF ISNULL(toEx) + *-- Visualización de valores + THIS.messageout( 'BackFile_1: ' + TRANSFORM(tcBackFile_1) ) + THIS.messageout( 'BackFile_2: ' + TRANSFORM(tcBackFile_2) ) + THIS.messageout( 'BackFile_3: ' + TRANSFORM(tcBackFile_3) ) + + + *-- Evaluación de valores + THIS.assertequals( .T., FILE(tcBackFile_1), "Existencia del archivo " + tcBackFile_1 ) + THIS.assertequals( .T., FILE(tcBackFile_2), "Existencia del archivo " + tcBackFile_2 ) + IF NOT EMPTY(tcBackFile_3) + THIS.assertequals( .T., FILE(tcBackFile_3), "Existencia del archivo " + tcBackFile_3 ) + ENDIF + + ELSE + *-- Evaluación de errores + THIS.messageout( "Error " + TRANSFORM(toEx.ERRORNO) + ', ' + TRANSFORM(toEx.MESSAGE) ) + THIS.messageout( toEx.PROCEDURE + ', ' + TRANSFORM(toEx.LINENO) ) + THIS.messageout( TRANSFORM(toEx.LINECONTENTS) ) + + THIS.assertequals( tnCodError_Esperado, toEx.ERRORNO, 'Error' ) + ENDIF + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_HacerElBackupDelArchivoIndicado + + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + LOCAL lnCodError, lcMenError, lnCodError_Esperado ; + , lcMemo, lcMemo_Salida, lcMemo_Esperado, lcBackFile_1, lcBackFile_2, lcBackFile_3 ; + , loEx AS EXCEPTION + LOCAL loObj AS c_conversor_bin_a_prg OF "FOXBIN2PRG.PRG" + loObj = THIS.icObj + loEx = NULL + loObj.c_OutputFile = FORCEPATH( 'FB2P_DBC.DBC', oFXU_LIB.cPathDatosTest ) + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError + COPY FILE ( FORCEPATH( 'FB2P_DBC.D??', oFXU_LIB.cPathDatosReadOnly ) ) TO ( FORCEPATH( 'FB2P_DBC.D??', oFXU_LIB.cPathDatosTest ) ) + + *-- TEST + loObj.doBackup( @loEx, .F., @lcBackFile_1, @lcBackFile_2, @lcBackFile_3 ) + + THIS.Evaluate_results( loEx, lnCodError_Esperado, lcBackFile_1, lcBackFile_2, lcBackFile_3 ) + + ENDFUNC + + +ENDDEFINE From e20f274341f8a54e6bde01480e3ae8e929c01828 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 15 Dec 2013 22:26:26 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Changeset:=2087=20-=20Arreglo=20bug=20AutoC?= =?UTF-8?q?enter=20al=20regenerar=20el=20form=20(SCX)=20-=20Arreglo=20?= =?UTF-8?q?=C3=BAltimo=20registro=20COMMENT=20al=20regenerar=20el=20form?= =?UTF-8?q?=20(SCX)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 22872d2..05a9b36 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -51,6 +51,7 @@ * 07/12/2013 FDBOZZO v1.11 Arreglo del bug de _amembers detectado por Edgar K.con la clase BlowFish.vcx (http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html) * 07/12/2013 FDBOZZO v1.12 Agregado soporte preliminar de conversión de reportes y etiquetas (FRX/LBX) * 08/12/2013 FDBOZZO v1.13 Arreglo bug "Error 1924, TOREG is not an object" +* 15/12/2013 FDBOZZO v1.14 Arreglo de bug AutoCenter y registro COMMENT en regeneración de forms * *--------------------------------------------------------------------------------------------------- * TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS) @@ -62,6 +63,8 @@ * 06/12/2013 Fidel Charny REPORTE BUG: Cuando hay métodos que tienen el mismo nombre, aparecen mezclados en objetos a los que no corresponden (arreglado en v.1.10) * 07/12/2013 Edgar Kummers REPORTE BUG: Cuando se parsea una clase con un _memberdata largo, se parsea mal y se corrompe el valor (arreglado en v.1.11) * 08/12/2013 Fidel Charny REPORTE BUG: Cuando se convierten algunos reportes da "Error 1924, TOREG is not an object" (arreglado en v.1.13) +* 14/12/2013 Arturo Ramos REPORTE BUG: La regeneración de los forms (SCX) no respeta la propiedad AutoCenter, estando pero no funcionando. (arreglado en v.1.14) +* 14/12/2013 Fidel Charny REPORRE BUG: La regeneración de los forms (SCX) no regenera el último registro COMMENT (arreglado en v.1.14) * *--------------------------------------------------------------------------------------------------- * TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES: @@ -364,7 +367,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias lFileMode = .F. nClassTimeStamp = '' - n_FB2PRG_Version = 1.13 + n_FB2PRG_Version = 1.14 o_Conversor = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' @@ -1364,7 +1367,7 @@ DEFINE CLASS c_conversor_base AS SESSION *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tcOperation, tcPropName LOCAL lcPropName, lnPropType - lcPropName = '' + lcPropName = tcPropName tcOperation = UPPER(EVL(tcOperation,'')) lnPropType = 0 && System property @@ -1613,10 +1616,10 @@ DEFINE CLASS c_conversor_base AS SESSION lcPropName = 'A595' + lcPropName CASE lcPropName == 'Name' lnPropType = 1 && System "Name" property - lcPropName = 'Z000' + lcPropName + lcPropName = 'A999' + lcPropName OTHERWISE lnPropType = 2 && User property - lcPropName = 'A999' + lcPropName + lcPropName = 'A998' + lcPropName ENDCASE RETURN lcPropName @@ -1689,14 +1692,14 @@ DEFINE CLASS c_conversor_base AS SESSION *-- Quitar caracteres agregados antes del SORT IF '.' $ laPropsAndValues(I,1) IF m.tnSortType = 2 - laPropsAndValues(I,1) = JUSTSTEM( SUBSTR( laPropsAndValues(I,1), 2 ) ) + '.' ; + taPropsAndValues(I,1) = JUSTSTEM( SUBSTR( laPropsAndValues(I,1), 2 ) ) + '.' ; + .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', JUSTEXT(laPropsAndValues(I,1)) ) ELSE taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) ENDIF ELSE IF m.tnSortType = 2 - laPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', laPropsAndValues(I,1) ) + taPropsAndValues(I,1) = .sortPropsAndValues_SetAndGetSCXPropNames( 'GETNAME', laPropsAndValues(I,1) ) ELSE taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) ENDIF @@ -4058,7 +4061,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin VALUES ; ( 'COMMENT' ; , 'RESERVED' ; - , '' ; + , 0 ; , '' ; , '' ; , '' ;