From 2b7d196f51eb28cdfd6e020ccbdce0e6559706e6 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 10 Mar 2015 23:53:08 +0100 Subject: [PATCH 1/5] =?UTF-8?q?-=20Agregado=20soporte=20de=20errOut=20DOS?= =?UTF-8?q?=20e=20implementado=20en=20writeErrorLog=20cuando=20se=20loguea?= =?UTF-8?q?n=20errores=20-=20Agregado=20soporte=20total=20de=20comodines?= =?UTF-8?q?=20*=3F=20en=20nombres=20de=20archivo=20para=20procesar=20m?= =?UTF-8?q?=C3=BAltiples=20archivos=20de=20la=20misma=20extensi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 60 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index dbd2553..d879a2f 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -143,6 +143,7 @@ * 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -212,6 +213,7 @@ * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir proceso multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Cambiar clase de base de FoxBin2Prg de custom a session (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Agregado en v1.19.42) * * *--------------------------------------------------------------------------------------------------- @@ -564,6 +566,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -597,6 +600,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -654,6 +659,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION 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 + l_StdOutHabilitado = .T. l_Main_CFG_Loaded = .F. n_ExtraBackupLevels = 1 n_ClassTimeStamp = 1130668032 && 2013/11/04 20:00:00 @@ -707,6 +713,11 @@ DEFINE CLASS c_foxbin2prg AS SESSION ON ESCAPE ERROR 1799 SET ESCAPE ON + *-- Funciones para escribir en StdOut + DECLARE INTEGER GetStdHandle IN Win32API INTEGER nHandleType + DECLARE INTEGER WriteFile IN Win32API INTEGER hFile, STRING @ cBuffer ; + , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 + ERASE (THIS.c_ErrorLogFile) ERASE (THIS.c_LogFile) @@ -2069,7 +2080,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF - CASE lcInputFile_Type == C_FILETYPE_FILE AND '*' $ JUSTSTEM( tc_InputFile ) + CASE lcInputFile_Type == C_FILETYPE_FILE AND ( '*' $ JUSTSTEM( tc_InputFile ) OR '?' $ JUSTSTEM( tc_InputFile ) ) *-- SE QUIEREN TODOS LOS ARCHIVOS DE UNA EXTENSIÓN lcFileSpec = FULLPATH( tc_InputFile ) .c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' @@ -3281,6 +3292,51 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE errOut + *-- DEVOLUCIÓN DE SALIDA A ERROUT (-12) + LPARAMETERS tcTexto + + TRY + IF THIS.l_StdOutHabilitado + LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO + lcOutput = EVL(tcTexto,'') + CR_LF + lnOutHandle = GetStdHandle(-12) && CAPTURAR ERROR DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS 2>&1 | FIND /V "" + lnBytesWritten = 0 + lnOverlappedIO = 0 + WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO) + ENDIF + + CATCH TO loException + THIS.l_StdOutHabilitado = .F. + + ENDTRY + + RETURN + ENDPROC + + + PROCEDURE stdOut + *-- DEVOLUCIÓN DE SALIDA A STDOUT (-11) + LPARAMETERS tcTexto + + TRY + IF THIS.l_StdOutHabilitado + LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO + lcOutput = EVL(tcTexto,'') + CR_LF + lnOutHandle = GetStdHandle(-11) && CAPTURAR STDOUT DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS | FIND /V "" + lnBytesWritten = 0 + lnOverlappedIO = 0 + WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO) + ENDIF + + CATCH TO loException + THIS.l_StdOutHabilitado = .F. + + ENDTRY + + RETURN + ENDPROC + PROCEDURE writeErrorLog LPARAMETERS tcText, tnTimestamp @@ -3291,6 +3347,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextErr = THIS.c_TextErr + EVL(tcText,'') + CR_LF + THIS.errOut(tcText) THIS.l_Error = .T. CATCH ENDTRY @@ -3315,6 +3372,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextLog = THIS.c_TextLog + EVL(tcText,'') + CR_LF + THIS.stdOut(tcText) CATCH ENDTRY ENDPROC From 3947ac4ca84c7e6fe183dbde5487fd18c36c5401 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 10 Mar 2015 23:54:44 +0100 Subject: [PATCH 2/5] - Actualizado el proyecto por haber quitado un UT en desuso --- foxbin2prg.pj2 | 2 -- foxbin2prg.pjt | Bin 701424 -> 709438 bytes foxbin2prg.pjx | Bin 9513 -> 9513 bytes 3 files changed, 2 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 085a6e4..410e913 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -103,7 +103,6 @@ WITH loProject.FILES .ADD('tests\ut__foxbin2prg__c_conversor_base__dobackup.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> - .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> .ADD('tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" /> @@ -135,7 +134,6 @@ WITH loProject.FILES .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__dobackup.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__get_separatedpropandvalue.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__gettimestamp.prg').Exclude = .T. - .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdecodigo.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__identificarbloquesdeexclusion.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__normalizarvalorpropiedad.prg').Exclude = .T. .ITEM(lcCurdir + 'tests\ut__foxbin2prg__c_conversor_base__rowtimestamp.prg').Exclude = .T. diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index a59905a0cce9289af2fdd85a7746e41245be0d8b..55ed20485b7adee5cdec0fa301e632f255e3a83b 100644 GIT binary patch delta 39316 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 X^NWW#9V+bdH&ybV{l8!T|I2>?5QNN? delta 32810 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

{t)J6PgQ2Da~8v5)}`4f24I=L>va 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®`&5uH2SiT9`X&RC#M# zUal>_%r-WE%+KRW3lU_)gH*PtQ3b`hr3DBWf33K<98qtN!ui|iao~*tdNjW@4_`$E z<+dqPVr_-_ENr*x+PXzeZ7f%UFQ85~q4?a<;|mLl$J@r|78g769h*OCLSAlpejY2@ ztu|@}S6pRGpU|Gtaz~HLxA91mCfFwP+tW3*BX~HUx1G#jyLYP{G_G%1LB1`^esi}v zR&*)g0wG-BK~}g|ZOj(!RUfb)*{d!PLNMp6slN%{%3M^WjZ|h%}TUM4| zJS}%zA#?peZQ(597#JVsafI9Qi_6OuCH+$xgT8t)Nb4U$ElMg-pNA2xb~N<-o@(+8#ZL4UCGB(iwiyWILK z+mnkaDXHtw>MaA!Wz|a8Zo}!j!HG*v0Sk=8B=*!XwIn2)r{+Sug(v5a zD@1)euFTCHYWMp>?I`#S$WBR186L;)-{Z<{Zdtx9xuB38U8F|XXMU+FuEECs^B|rM zp0dGx(=`=1osQAaY#FTEX*D;(sGy>TVUx-yOe(jHK{h$7)L?ev zv>K0^3p@i)l*k@9qdpSOcb89k)Vbz@;;~#hpFit>e3RL}Gio?$@bnoq88z6v3a&kc z4XjeTg#0br&&2x=RVU_Yq zOh3P^vB~kG(Yd8#b4zo^losXW8g>2>`{4?v2o`pWe=TQ0S5b9eu`c)uK9prf!^N2V z@*Mc%*yPfZB7Co66RxUZqB@vOysG+D;F+FS+%F9sT9Hroux{T<`#NqIqO_FR+YO=FQK_G$WL#--)-O^QoQ%KUky8Ro*n z((|X3=ipJ~iEHqj9V(IyaM8lWSJ$$c*VHI6ZynosO>H9XdyRd5O%3*c3Qzs<+SVyE zzc{zZFyQ{ptoE83=9_{i0C|{7WymtMpg6zhHrBQp1$%m%8RA2a)>k_xxo}e1xWRAL zMKc0XoFfj7yD1KiDLH4mDd~nWZFIijqhhnlOSQL6wnl@B3nos=&q+z_y~AXgJ<`2? zmprwD9fM9$eepb^fd4Y36c?0#?Lh8SJUF*-Qhsa>21`tnt9LT@>uNyYf?cMxE80R% zS$<*uXzl=a>|#Bxt3la68lfVgT@>ZzII6Kt0wyTqqw&b2KqC4&4@xg7&NumwIrzvP zPjP)}APLXFB_?HMXJ!mr@*aEby4pPSk-a=RX7&H(S~`BnE?ife>7^f<5`n}n4%Gtv zV*7+lDz!FFHK=r-t4mrit@9{bBiV% zKF*%Ksdln@;?YbbWj42#-?Kk%s*&Qw@0rIfXt?l4Gf#Ue6izD0%e9_kFWrJ69y(_R`w}~PL-iFO|BaowrP?~Yi|1~*&fZj9Qd*Q-h z>bRtIXj*FT3uc%rWtKeZRI%HiEcLe9P8{_Yn|WIe9{Lov-ONhJDk&|`nvg%bAeVdi z31#c?z5^bjI$P>K50m3|Z&UAx$2PfOy;|Ag$u8bj+lrzWi>yJ}k9qU&0QO*wst0}V zYqm`{8eN)?$ro~iFDP&1&t}%Bje>Usn!#vQMsNb3+Z7g!Y7xSA)~Jmu=HaPN-n4Z` zcrr@f8c%<6UO+uwPGEK4~)r;K_|dGxH~)xb5)3X#J$p@{1>>;aNt` zbD{jA3FTAGM9T2sC}(<8KJ&9^UgAqFSxK!L(D^M#fG3rV;)O6Q7n_z}RMIrsjDmi{ z3y_vyKCUFM%m~`uhV7|UgT-HC*~wZpLM-dZZq~wAj_kyO?x;;gduP`BjvClxRTnb} zPbz~OpOBM?c2>-vW-L4E2=OO&>`~3XZRG=|q$?#&Mi+-sa|XnvrFS#AZd6cQmS0+) zlVRw%t2^6wM-B3=>}>|$^=T^-*`Ie%UFQ>*dTEhbtA3_H@X{R3pLrH*7BOJZ(xF;o z@y}sPXJ|HY*x043(1_n1xAZ;u)rSj~p3<6#pFD!EP-YV}Rh(AD1`1k$CoW1RWv0ia z<|L%XWo7+2fpeRRdKuycuxAC$DjuDL6a(01LDR%lQ#tJd$DWO+Dw7g#PG{c>S`+K~ z8HPTL_Z;o>*`{)#toJR|U&|epKRUlOSDD9BMJ+P8{3$cEUYo34$XOQVWzqcna+VpO zew$5S$+n7Gu-}ReJV>b@6tan(MvyppE4wXfjl`vPW|K5q%g^?3Q7idVZn4?<;tNZ- zmrl%|oKifdBpT1?^Y9>IyJu=a;{1=<6OtAw793z3C7AK}L3UVz$@(1O=>@oCW4z+S zcG=!9n4hdg1xI{kCQz>!^Y91^o@_RXA-4O070XcQb`^V0MuI<|Wp-JM5Pv(zzQMQO zbH5wH^~-YL5_7d^!PXtvmck>}hB5v0I|isPmnyOxE_co%LQXg2f~QywP+xAR&RH%- zxV6~b1cr^@^fEww;Z5GmqM+u6qi8J# zd=$x(a7Dj1Mtbg+`1FF0`DW8dj4}mWG16h7hxr8WdtF+ZTsPt^+ZOvdE)9TW4vu9q8sY}Sjv2mrPxl`p%Cf7!+*0UA*UrA@4 zD)i6DX022-khViu9~I^Jd?+haQO>@@*%IKOL&NJ7GUfp}Dd`ERgA$W^Kg5ox7>|xU z#QspVQ1Q@6rfaA^Hj1^uw(WTYm2W-tO!AkHubtAd+cCIBYO=P$#_=We&W1hUp!B74t8^Dq1j z``iNDf}0V^SWx9nD$PH5+hn`eu_wT5PtB?|xw@I9;lm5>m^?gBgj{*!_QD7(P;kQ} zcN6RFs`+|8C-UGBhmog9Y@@3dHuOD-bHh+=nAQ%+EiKE><9>^$r^{wgAWh)>^ht$< z+4-eK*p0%Lkui@v?U3*=CE)W4M(6YBA6rY?T|j*K4?s?WQ#okNdMiu%uR~H2zm2a`$!UhB z2`0;Io>!CDj~<%8xI39ucxXXQC#CXG8=96gLTtLps%wtRGT9yvIHW~Gji_B|I1i7+ z@MSjFS4Wt*VQ-2a$@z_(aqFJ&B_x|JIMP zC!74b+$$b4alHZzoNcfS8xAR+bN_VCKhF70ow>*U%ft;!@zYbB-^?l3>{$aFiMPD) zycyUq(p<**&7F~sEXNy*;P$=_FLU?Z_Ek?YLBhKXG^_;{6p!`>}7a=BKH zZZ`IHR*R%tKJW(TwsuO*-fH4{c1hb~u*|kq@SYK`>*kL*Guj!idcTPqYO(qt=eKdn z{q#9|-CMI|rhR4d8_MrI$@y)a@~wX`aYH%p)12SVDd+VQ3-i$$TfaDK@C{`vZkoVR z@-G<6txt9PPseJ39r}IB`<(Xt#|*-5cCP7# zZaD%S?%53HsfUNKg?@0)TO!yie(@btkNGdm#=!VkNq*TNr>ZobDr=0ZhxLwcc+E^ zNMnHkTBtt_Gx_y1J~)i^L)hR$!_BaU8LoYp^LsecnlRSH_0!mb_d#))hH>ph>{Ngj zW*HEdxW9~(Ht%jTxoA&ka=-tJc?M!8cKaFD3g6wYJ#U8BPkz`6lV|$Kkp}98%uqMD z{$7+{o{Qs_+~-!XS%DZo)K}Qcfm*=ev^RLHUe27p++kvGbCHdG$AlcdLx(YW{Ea>L z$}Zo>ac@W0JM|$)@pL+}SqPgrPxE16L0Tf~+)DGc?+Ma6C`@tFeeH{F+GH2@$r8<% zg|yZ@?PaaCuT{2Zhvs6Da3`U1N#q(IU*kF!PUxXu?!^Y4)mpGwyEQ+y z>WXGr`kUUtf{kcgg|c?iS~8`R7Q#|HX`U7Q6&=`C;CBzqCu0r3FK+YOcDTY8V+Q%x z$??-&euWz^s51W8XUM28zETh0Yi|!ooX9Q#UjqYq*(J?S~ z%1z72ACJU^Ya>#o`CdEK=+lKo~cZNH~`oKq+s6x%gGi?IJWKwB)F6zPCfe zVGfF|8mDcQp=xJ)X@Pc3lHJ^Ux|-=17HMr<*`NX~$i8%{wn^}T6xP_3la`bgpOl#x zmmN2k*`{knco`YWyxf`gOPu;o!YvKq6;9!o?=Sq4)KW6t$AZVSzV?Er4E1Iu` z$|dft9rd^x&@J#CXJN2W?kM0+Q1%_qYmJ49f7jU!Ln6%n4VOkJVa;VQuoXuSDn-~CxyH9 zj?Auu!WA9F9)D0vCL+vUmGjd(gsq9@L_l_&Mr*@t0bjz1wlEP+~W~ z)H<_MUu$J9*k^V`^Rqwnjn)pA`o2cd*8iX>f=iGyFxbB1l;$P5hd4Q*pxC@0v_`D@ zj5goJ<_w6mKUt++6WRVVS`hELF6^kM?#C`)feIg=)uytuXEbj%;1}(ZKemw_nMXOP z76KbEAH(MJv59sRcfv1P8+*IknybYn&M6nqDu2+zUda=5 zfpxlt7F8zd8wHmnr$91mChM6tyi3ucPhV%sk!C02Zz!#0IiemU36^A@SCsvGS-&C( zquACXn!o*7t6m|p5Lx%|H5xhIAM8jg!-)EftcNQ`NS3`o*LO-T*-nW;?BW?Dk?5{> zmsx9F4`NyKV6NA_^&ukbr|XSPA3nkv;bBm0nz!D_KHN{=EiloK$C-~x?iZ}Lw2u$a zpB9LY~kBWPtGnpcu%%vc`1w-TWX6R>{{jo^>JF8G?AJRhq-c8Dt zrx+g0-mkOXOLjL>E93ED^)&msZhE<5pLs#uD>9cP-MtZBG&3j*_vU`$uONlt?jF|4 zl$?>7cA=bgPtrrg7w55INqU6%*#hR3tOv5^l5{^YaJ32cCF#Lpr%fif%E4y_h!r2+ zY%)hAgQ>q|g2fzswA}@{g|ou!*Rwv;XnOlVV6?$$R6=EJQ*X*nDC=i_hd5!Zww@?5s(hT?~$7>vy6Uv z3vrCfruEaCh_h9;nt#9V&OYe}Gk@pKe(k3>7ngW5&;EKNWs|ppq?lK{)ra-(uX~Bf z{_J4{h?D%;oc?-Caa{o0)L(BVz8=87>aRBzw*|0U{q=D1Z~zNQMMC>+EHM@GRW>$` zV|!D!nBy;+vbR%_VO4YXRjO_i|7gXob8KzRg3|OzacV5J(mEWC0CWv8TOSt$#*P;jl~cnW(zUAJ{SJCF+*7RBpN>zYvC;m*8L z2EM&Bpc=V!pE!AAwbGKZ?&y`^JxiO%5v zmvoF~N{fjd9;E-Piy)n$zlAuOP5UU0e8fh=R($_WU(i6Yk|Kp;K%!JdoV!gZ70w9z zL_ypNuQ6C3!mbV0XIDf@JknM%j^f2j_l-D*ypT{8{>BJiQXFLpWx_xtBpOM@A?bK( z^gmPiLaGwB3Ng|#aW+yC4AtVO%u|TGHz_t}h(4QHhUzxvHcT(BkdPP8bB!ds7Zo-N6}OclS?zE=THPmHLXC|Q?Cl@a@gzsAz ze8UqB%4W%5}8Hqd|3Nb7tz7Au+k)KS|i-S^85#gdluDk%EW@{6)QV zCJJv!Je_X#ZL^V+)gi@J&&5!6k=Wk3`o^I88BattPZZi)9GO3^&$S#w^BT)spU|7) z_Z4EF&|BT3=|H3BaZSsg&^rsq?3CGgOyQEB_Y9SGI!56;&|`39dBW9mh#AIa{rLT}_IUesCJSM~SV3GDxh`A9OL%%bPCO<>iZMc@I8Z#% zV&byb^?;a2?U)>6xnzlx1&g2_vu+h4ZV|iT4XQ2p_gjZq>?5Gm9(0LzNsIP+eyL??5{WV zmMmnG-Zx}3t*1rSO4>-hA@e4khNHSjm3YT{C7ZKJ|1@wdtyU^&k$Vh%qL}nZ(3@ge z!DhW3dug*C+IcOFlqxYnsl-daW9W@$YiSGcNTlQ`$IyO_JIS^5K6svTCAEW5N!s_t zI(B6<29^mTi`=58MsJ|r-Z8X+Ciw8bi+uTC3W%ZC=zWdTr;Wc`kOBDiOC9{5kt3-;mF;J^<7+d+SZ>q@@@j|096I`?BD90d~IpHI($-ii-a4KxAx zC(zO-=G)y%f!lz-S%E+95SRi+%l$+aTxJRYo(bF)bdyhsY`~8L4+h=&Ga?*?(E{K? z(1UT$DHa&-%co_aD-RKW9Xu@q{s#1c!+0M)Fy8~X1^P$4WA)({Iw}DTA{u+yE9Da}} z;0^JoE6`HU;8pNo;8pdM2)aiV(O>4t8dfssUvdOmtH4@NDqti|;71E|3AinA574!FxGjQ9yj_6X z<_oj~nuG(#0sjiR_z|3r0QUo~SOU=KBZ2yXu?t#01Uh^_-qf$5bpt1Y&caVJtOe$i z>N%kEaVNyx1!e?Z2>J_L2(bbG1+2S>blOd%ZooHyBXB=tM2JWOfV)G#)>a}V051b>13Iv^NU6Z9fD=G}gAX2LrFA$gRvO`dq6*j`y!Ko z-v!>+Po!DtD5V?f8u&HP?K4D@-O(t4vq6^)fJK1M1Fr<#YM@8~z<50<4FO$-PbBbV z;7&tC8iLO#;A<6NJOOYNpK)N^0Img{GE}4z;M>6Ep!ec485omd`lCpsT@ysYeSQiB zJ_CB|M3HU-HwOL-bma_K!2`+xe-63^pV7dBfxFHWsq+&e6#!S1gHZ(V);!cP7_)#+ zf}XNKq#eNj0^SLF>(e5A2D}XTPtbnPiBtvrE^t54)1Mb9$P?BA-Ud2nnMf^w`OibV z2wHzxq)x!U0QUs_QzZ)QiTW2+bfq;Sy^YT^5Wq|I=p5*qYeiZP>(oo=Oz#oHd@|j2r zyios7fH4AKJ3cQ$U_S7lpjV#~X(jNNz=uG`{D_9+jURjhE(YEG3|c*K6>tgYpr1tQ z2>d(n0MNJ3iG-)lNkGqu{!OH-zl$^x*ag`7he$L2M7yd0BM6L-09IHfdKq{sFn;cc z{DUP*_Q8*704ISCgQNcxxQWhxUPhvW_@w&6sQ_OEJ+(cy_<>`AFQBt;gX4bzxFc{i z==b|dv=KNR_$KH_aoM2a3owR(u@xX8Ln40FeH8FS&@Nf<5PleFfD=J0LnMj@o&ek) z^o-#WO;7$rXWxhmxp2S{nFEISUca!9(4crNM2IyOhU}E6jz_E)ZnzuxvSAkQ3-vWIAL)|{$5y00#?_41fzy3b~ z_z%!uR;-t(RUk?T#%<7pHb^uJcs=m5pg+aEfqwyi4J>Vw=*oVHz60jouI&LNc0!_} zApGDCa3Ie9n_ZIV1n@rK9MGR$mgwC13C1}vhJZeC z8(IPD@OIufV2_b;?=}SH0xkjlxGGaDa18JVpjWxcG!Qrm_$$!M{bZU1JR0~*&;?;K zZ3LbMyasf2xJ)O3=K^<#kSpkHbD91GV;dN@C_M7sMW$Y%7_)(IfPSy9Om6_!0AB~4 zG(aYwFw{TyhM6+`Fj}TG;0$2TJek_fmFXSenZRcsm+{^hnYM((i2Yhwk#+xU5uLNJoR z_yhDw-9oPej|UEPvCsi83x3-Mb3EW@eJzv}YN0NT(Pe=rgYJbNDS8z69Pkv-No_6k zHLw-Vs{%CZXd%BQ@Dsp?L9gm+p)BBJ9)1E~U$TXs0AnT?52sitY=DI>0dsGd4*KY5 z3q>`>1QJ-wv(WHD3w;V44reuff`vS$SSX|!CLh4PL4W#~g@ynR1Qw@T=)1=)G!wWS zxb=JsefW%pz5rh8&F6mrl?;hAhZBLoQP4M+TWBEg0pNA7S*YMm3vB{E2)q__@^%aD z0j>gm40J#I%F>^}8oc8)&@~@hsC^V>%fOvKvCx+N7Mcd!3-}V~F-I))3~;Uw{Qm}k z*7#YbPr=v-fl;8>{00SDpc?@n27MJT#Fz>EH*nRgcuVmLl))>NegTdE z{snZ{9Sga)M3n*$2Hm5XLRr8UfS(4P+E$^YR%q}Q@P2avR&-EkF&G_zkAaTC4%j=u zBY<;3AL^^n9pLG}HK1SUuTXqz49~z{fF7K#&=BAkfS&_BAVZ;I;7Z^Hp#3rxnhyL1 za2)8y_+6>zfGf6xF$mx~CS$9?_y)MuFoi}uq|h_jXMwLQROsX`lnS^n+^72<{C?5}%pTjK+rk?r{t0CRthBEkCZ)iO z1Fck*VkO^LCC{+?wTB>BXs5>e>PIzYL7er{PuYbFB1J2cjLo zX>+ag=~Gr}(Gfop27GjpmGT!`X+H4Jz>7dXgU=G+v%qhGu32J5S3@@h?)bcwqL`J| z0$&Es1icrZcYtpK-&$^^MK4+D+X^s5c)wi$@8a_dumpSxbks^Kod;HcM}p3(wDKQ{ zAur&`p#9cb$)yuKA@J0VR(k$bD|H4A2Hp+&>({K*2RIVg^17As-muaT;5NXv53Mx( zBP&&02ct6>j|1fHx02EsQ)J);pnp1Gr7+-BVEt1ob;o3`C2%(I*27kM;d3j_vax0W zZu^y$UO#E2rNHBXzXE;nTPtk^E(hN6yOnO@)4mI)^}ucZu+sEDtQFK1jA>xJ0mkbW ztP}_QIB*r{n7^!)0sJg*4ruqQR(crt4d5Q2_usP86TnA+={9~M3tRqg0bd1fg^6Xg ztkM-=yvd20T2xBJM|}WOGK?p^T~+GrU7=D87|p?W#9O5|15_FZ+ynR==$Xw`S_r%t zcq`}>{CJtQE6j%hW;*DF=_;)T-UNIY^l-d#pi4LS4d7XzPmKf**c}6qoQp^AMyqrX z*c13g&~H{0sPqjOF<=}4{VP6h-7(<+_IO04V0^rRI|9dpPQxbvxHIq^&azo&nDn<;1-xG z55n~LUEmGCb3y<1q)IM5h~5GASfJ9L=TvG9d>Xh4bop|XCIIUgVqXP)ZiPzQfqj8P zSE_Vvy-J@0cLxsHpjOZ-{Jxu4PYgU@1iq!x`kg9020R=10O-#?RA~qB8sIyiyB$*L zXW(~%^AD>u|2P!tg?^-% z0IQuK+(V;|@z{O=UIV%sKWH}rcolH#c#T36GFB@|w-QR5`E2~0|YH)zy0^y90xtj#JfKk6fo=kD{;WoSfl&hiH~jwJ3)eO3 z)Cc2t6D%%nXw*m0X)kag@FSq}aNJCNF<1e=gQMH`{B$Y+eiQf%Xct_csRTX>922h7 z#HKo(0>-5=dLH!jRyu{Jpa)bm#WbjmPA_4RRt83Q;P*gJ?yA%4z}diOx*@D55&#|y zybSd8K05sl`~>itzB+a2uTx?_EVY1#fc`X7r-8uRfX{wRDe0DvGbwS z(LiT62TJ^*bsLG@1RM0?k7s+ozQ_IG`SE$bKhIAo zI$+46EH*26A9_i^kOufBT#mkfgb#sjbIFKJ9B(~s$g`{X@8F&2j&p{XZ~;7wPP)Pu z!sT!=`dW`6;Z-dEAqM`NgdnqMH6J*S`rK!T{=kqf_&qooeTgn|;~FX>Jcyq2$dF># zg!9oJiy~^VIN%hUlK$yRLhu;upuy~nRk9@;r;KNjpzkw%>t`T=fgN*{?4rx;hIhiJ z(X;3xSNK@|a1Oe%NXZ!Nn@@j;cI{BomBUI1zk%*BmBg=QV}S?JS^Iep%qg2vhAv^c z2WxOl9Y>Uz{4cH}HZ$-(5NK5r2XBKr(Z6&mX@S3l<*E|%CnbNv5x5bZ@tcy(xx_U$ zo{ruW;?A;gHf)BK6b>tykwQSX$ya638Bc7O-0F0%Ti&q5I)*LfFP#bh_x zUZ==mcwvrJeqgWHd>6ar;ED~r_G*-vFekE$mn%SW=>-d?@i1L@rq3qH^nPixNX+mA zx|&|E<$2mL*muSz-E>kKWqC3;9-3;GTj`uX>1La+Vc>?>E?enr?y-#?gf|!4Wr)tj z$qLs1hj!Z~y525V;TCuteVvdxxk82D>Kcdi6H+tzv4e2)cMgdO^E&!3rr*)Mgw%6{ z)G!=RNd4PSN_CM^hZ#7TsmWtfY85GU1irA507*(sOk|eBg@n{tLTV5mg$K|-6H;ft z#tIBqRBJpWR}*f3FB)I+Nu4GykP*A!r{J6DQZnGvM822c=T4CSMq4#0W?&uzO(!+U zB;$PwZ-U3r&1AggWVmhc+FP28lj*j=CVaeCles}+H@pY_6+K0wr5ipAccF9a(K0{; zy8v4p(ees;V+x6?55BV<|Bnz5stFh)41CjoSCa>>5fC21?|x0>!tYn&_Z$h5adapC zZo|Kyfy;VHJJ@p#yb!*N{sKELNnv*k>~ZQ+fZdM59(a13E;n%3+Ei*4T#@M4c^D$@ zw1O^(fdOZ$g zDqR_+lz}H%5znKmD8+Rv*{$|bUZ!zoI(Qz$|dj(Yx}5xt(XoEK9l zF2Ysl4hqMvyxO7LMrzdLV|D*VnvYmWB*a;1;5w;HCfsrY0sJp_ggQ z44PY*85E2x4J^zzzhONg!dYm?1mqi;SWI3hEI;{ywCZF=X;UWar;{zD8<<`%pS%l5 zebSk1Bh$e2gLCpeAhlmH^soCPqdKP~aA#px~we1g0h?AR*UJ z3=BM3%nS-f7Ut%bo8PdW5aC?s$OPmYnOIC-C@equfwbymMrl)~iWieDq#KwtR!`mq zr1T9Y+sHI9netBF2c-U}Zg!AmV&r5H0O~ZhFf*N8$SyzmgS_hGemO(F&yN`y9_j+^ zFf=it#h-jws<8Ab*L1#<&~$&K7##hWL~&t~E5KsOYh4 i)^jn`lyXguRqDqa9{W>aYZ From cadd91bda3788cb5f50772a23cfcf9acfc8723fb Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 01:53:28 +0100 Subject: [PATCH 3/5] =?UTF-8?q?-=20Agregado=20nuevo=20par=C3=A1metro=20par?= =?UTF-8?q?a=20permitir=20un=20CFG=20alternativo=20(Lutz=20Scheffler)=20-?= =?UTF-8?q?=20Agregado=20nuevo=20m=C3=A9todo=20API=20get=5FTarget()=20para?= =?UTF-8?q?=20obtener=20informaci=C3=B3n=20de=20los=20archivos=20procesado?= =?UTF-8?q?s=20(Lutz=20Scheffler)=20-=20Agregada=20nueva=20salida=20de=20a?= =?UTF-8?q?rchivos=20procesados=20a=20stdOut=20(Lutz=20Scheffler)=20-=20Ar?= =?UTF-8?q?reglada=20la=20cancelaci=C3=B3n=20del=20procesamiento=20con=20t?= =?UTF-8?q?ecla=20Esc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.exe | Bin 519588 -> 523416 bytes foxbin2prg.prg | 348 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 243 insertions(+), 105 deletions(-) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 1805134b91cc103f96f0f71363ddd5fe78006947..793fb6c9832effefc8008361d42a75524ff236e1 100644 GIT binary patch delta 33922 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index d879a2f..4f9f6e0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -242,11 +242,12 @@ * 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 debe anular el timestamp ('1') o no ('0' ó vacío) -* +* tcCFG_File (v? IN ) Indica si se debe usar un archivo de configuración distinto al predeterminado +*--------------------------------------------------------------------------------------------------- * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName ; - , tcRecompile, tcNoTimestamps + , tcRecompile, tcNoTimestamps, tcCFG_File *-- NO modificar! / Do NOT change! #DEFINE C_CMT_I '*--' @@ -464,16 +465,14 @@ loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; - , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ) + , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ; + , .F., .F., .F., tcCFG_File ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) -*IF _VFP.STARTMODE <= 1 -* RETURN lnResp -*ENDIF SET COVERAGE TO -IF _VFP.STARTMODE # 4 +IF _VFP.STARTMODE <> 4 && 4 = Visual FoxPro was started as a distributable .app or .exe file. STORE NULL TO loEx, loCnv RELEASE loEx, loCnv RETURN lnResp @@ -489,7 +488,7 @@ STORE NULL TO loEx, loCnv RELEASE loEx, loCnv *-- Muy útil para procesos batch que capturan el código de error -DECLARE ExitProcess IN Win32API INTEGER ExitCode +DECLARE ExitProcess IN Win32API INTEGER ExitCode && To read returned error code with ERRORLEVEL from Windows ExitProcess(1) && Esta debe ser de las últimas instrucciones QUIT @@ -500,9 +499,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION LOCAL THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; + + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -543,11 +543,13 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -575,7 +577,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; - + [] ; + [] ; + [] ; + [] ; @@ -606,6 +607,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -613,7 +615,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] - DIMENSION a_ProcessedFiles(1), a_ProcessedFiles_0(1) + DIMENSION a_ProcessedFiles(1, 5) PROTECTED l_ConfigEvaluated, n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess *-- n_FB2PRG_Version = 1.19 @@ -647,6 +649,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_ShowProgressbar = 1 n_ForceWriteIfReadOnly = 0 l_AllowMultiConfig = .T. + l_CancelWithEscKey = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. l_UseClassPerFile = .F. @@ -668,7 +671,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_FileHandle = 0 n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext n_ProcessedFilesCount = 0 && Contador genérico de procesados - n_ProcessedFiles_0 = 0 && Contador usado para los archivos file.ext o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL @@ -698,7 +700,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION PROCEDURE INIT - LPARAMETERS tcCFG_File + LPARAMETERS tcCFG_File, tcCancelWithEscKey LOCAL lcSys16, lnPosProg, lc_Foxbin2prg_EXE, laValues(1,5) SET DELETED ON @@ -710,13 +712,21 @@ DEFINE CLASS c_foxbin2prg AS SESSION SET TABLEPROMPT OFF SET POINT TO '.' SET SEPARATOR TO ',' - ON ESCAPE ERROR 1799 - SET ESCAPE ON + tcCancelWithEscKey = EVL(tcCancelWithEscKey, '') + + IF NOT EMPTY(tcCancelWithEscKey) + THIS.l_CancelWithEscKey = ( tcCancelWithEscKey == '1' ) + ENDIF + + IF THIS.l_CancelWithEscKey THEN + ON ESCAPE ERROR 1799 + SET ESCAPE ON + ENDIF *-- Funciones para escribir en StdOut DECLARE INTEGER GetStdHandle IN Win32API INTEGER nHandleType DECLARE INTEGER WriteFile IN Win32API INTEGER hFile, STRING @ cBuffer ; - , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 + , INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3 ERASE (THIS.c_ErrorLogFile) ERASE (THIS.c_LogFile) @@ -776,6 +786,39 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE addProcessedFile + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcInputFile (v? IN ) Path del archivo (ej: 'C:\DESA\pruebas varias\lib.vcx') + * tcProcessed (v? IN ) Procesado ("P0"=Not Processed, "P1"=Processed, "P2"=Expanded) + * tcHasErrors (v? IN ) Tuvo Errores ("E0"=No Errors, "E1"=Has Errors) + * tcSupported (v? IN ) Archivo soportado ("S0"=Unsupported, "S1"=Supported) + * tcReserved (v? IN ) Reservado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved + + LOCAL llAdded + + IF NOT EMPTY(tcInputFile) THEN + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + *-- Buscar si fue procesado antes + IF .n_ProcessedFiles = 0 OR ASCAN( .a_ProcessedFiles, tcInputFile, 1, 0, 1, 1+2+4 ) = 0 THEN + .n_ProcessedFiles = .n_ProcessedFiles + 1 + DIMENSION .a_ProcessedFiles(.n_ProcessedFiles, 5) + .a_ProcessedFiles(.n_ProcessedFiles, 1) = tcInputFile + .a_ProcessedFiles(.n_ProcessedFiles, 2) = EVL(tcProcessed, '') + .a_ProcessedFiles(.n_ProcessedFiles, 3) = EVL(tcHasErrors, '') + .a_ProcessedFiles(.n_ProcessedFiles, 4) = EVL(tcSupported, '') + .a_ProcessedFiles(.n_ProcessedFiles, 5) = EVL(tcReserved, '') + llAdded = .T. + ENDIF + ENDWITH + ENDIF + + RETURN llAdded + ENDPROC + + PROCEDURE AvanceDelProceso LPARAMETERS tcTexto, tnValor, tnTotal, tnTipo @@ -805,6 +848,16 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE ClearProcessedFiles + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + .n_ProcessedFilesCount = 0 + .n_ProcessedFiles = 0 + DIMENSION .a_ProcessedFiles(1, 5) + .a_ProcessedFiles = '' + ENDWITH + ENDPROC + + FUNCTION get_l_ConfigEvaluated RETURN THIS.l_ConfigEvaluated ENDFUNC @@ -815,6 +868,33 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDFUNC + FUNCTION get_Target + LPARAMETERS taTargets, tcFileMask + + EXTERNAL ARRAY taTargets + + LOCAL lnCount, I + lnCount = 0 + + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + tcFileMask = EVL(tcFileMask, '*') + + FOR I = 1 TO .n_ProcessedFiles + IF LIKE( tcFileMask, .a_ProcessedFiles(I,1) ) THEN + lnCount = lnCount + 1 + DIMENSION taTargets(lnCount,5) + taTargets(lnCount,1) = .a_ProcessedFiles(I,1) + taTargets(lnCount,2) = .a_ProcessedFiles(I,2) + taTargets(lnCount,3) = .a_ProcessedFiles(I,3) + taTargets(lnCount,4) = .a_ProcessedFiles(I,4) + taTargets(lnCount,5) = .a_ProcessedFiles(I,5) + ENDIF + ENDFOR + ENDWITH + + RETURN lnCount + ENDFUNC + PROCEDURE l_Debug_ACCESS IF THIS.n_CFG_Actual = 0 OR ISNULL( THIS.o_Configuration( THIS.n_CFG_Actual ) ) RETURN THIS.l_Debug @@ -1847,7 +1927,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION , tcExt == 'MNX', .c_MN2 ; , tcExt == 'DBF', .c_DB2 ; , tcExt == 'DBC', .c_DC2 ; - , 'XXX' ) + , tcExt ) ENDWITH && THIS RELEASE tcExt @@ -1927,14 +2007,15 @@ DEFINE CLASS c_foxbin2prg AS SESSION * tcBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1') * tcClearUniqueID (v? IN ) Indica si se debe limpiar el UniqueID ('1') o no ('0' ó vacío) * tcOptimizeByFilestamp (v? IN ) Indica si se debe optimizar por filestamp ('1') o no ('0' ó vacío) + * tcCFG_File (v? IN ) Indica si se debe usar un archivo de configuración distinto al predeterminado *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile, tcNoTimestamps ; - , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp + , tcBackupLevels, tcClearUniqueID, tcOptimizeByFilestamp, tcCFG_File TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type ; - , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption ; + , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption, lnErrorIcon ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ; @@ -1946,8 +2027,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH - DIMENSION .a_ProcessedFiles_0(1) - .n_ProcessedFiles_0 = 0 lnPCount = 0 lcInputFile_Type = '' @@ -1963,6 +2042,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION * EXIT *ENDIF + .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) + IF VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504 ERROR C_INCORRECT_VFP9_VERSION__MISSING_SP1_LOC ENDIF @@ -2224,7 +2305,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) - lnCodError = .Convertir( lcFile, @toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, @toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() DO CASE @@ -2344,19 +2425,27 @@ DEFINE CLASS c_foxbin2prg AS SESSION CATCH TO toEx lnCodError = toEx.ERRORNO + lnErrorIcon = 64 IF VARTYPE(loLang) <> 'O' THEN loLang = CREATEOBJECT("CL_LANG","EN") ENDIF - toEx.UserValue = toEx.UserValue + 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.UserValue = toEx.UserValue + 'FoxBin2Prg: [' + THIS.c_Foxbin2prg_FullPath + '] (EXE Version: ' + THIS.c_FB2PRG_EXE_Version + ')' + CR_LF + lnErrorIcon = 16 + ENDIF IF ATC('-SHOWMSG', ('-' + tcType)) >= 1 THEN - toEx.UserValue = toEx.UserValue + 'lcInputFile_Type = [' + TRANSFORM(lcInputFile_Type) + ']' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.UserValue = toEx.UserValue + 'lcInputFile_Type = [' + TRANSFORM(lcInputFile_Type) + ']' + CR_LF + ENDIF THIS.l_ShowErrors = .F. && La opción "SHOWMSG" muestra su propio mensaje ENDIF - toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF + IF lnCodError <> 1799 THEN && Conversion Cancelled + toEx.USERVALUE = toEx.USERVALUE + 'tc_InputFile = [' + TRANSFORM(tc_InputFile) + ']' + CR_LF + ENDIF THIS.ejecutar_WriteErrorLog( @toEx, @lcErrorInfo ) @@ -2367,7 +2456,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF IF THIS.l_ShowErrors - MESSAGEBOX( lcErrorInfo, 0+16+4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + MESSAGEBOX( lcErrorInfo, 0 + lnErrorIcon + 4096, loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) ENDIF IF tlRelanzarError @@ -2471,7 +2560,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION USE (tc_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN lnFileCount = 0 - SCAN FOR NOT DELETED() + SCAN FOR NOT DELETED() AND Type <> 'H' lnFileCount = lnFileCount + 1 DIMENSION laFiles(lnFileCount,1) laFiles(lnFileCount,1) = ADDBS( JUSTPATH( lcFileSpec ) ) + ALLTRIM( NAME, 0, ' ', CHR(0) ) @@ -2481,11 +2570,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- Convierto primero el proyecto IF tcType <> '*-' THEN - lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF + lcFile = tc_InputFile + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() ENDIF *-- Luego convierto los archivos incluidos @@ -2494,18 +2581,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - IF .n_ProcessedFiles_0 > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) - LOOP - ENDIF - ENDIF - - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() + + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ELSE + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF .addProcessedFile( lcFile, 'P0', 'E0', 'S0', 'RR' ) + .updateProcessedFile() + ENDIF ENDIF + + .writeLog_Flush() ENDFOR ENDWITH ENDTRY @@ -2580,10 +2673,8 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- Convierto primero el proyecto IF tcType <> '*-' THEN lcFile = tc_InputFile - IF .TieneSoporte_Bin2Prg( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) - .writeLog_Flush() - ENDIF + lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + .writeLog_Flush() ENDIF *-- Luego convierto los archivos incluidos @@ -2592,18 +2683,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION .AvanceDelProceso( loLang.C_PROCESSING_LOC + ' ' + lcFile + '...', I, lnFileCount, 0 ) IF .TieneSoporte_Prg2Bin( UPPER(JUSTEXT(lcFile)) ) AND FILE( lcFile ) - IF .n_ProcessedFiles_0 > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles_0, lcFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: saltando archivo ya procesado [' + (lcFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_OPTIMIZATION_SKIPPING_ALREADY_PROCESSED_FILE_LOC ) ) - LOOP - ENDIF - ENDIF - - lnCodError = .Convertir( lcFile, toModulo, @toEx, .T., tcOriginalFileName ) + lnCodError = .Convertir( lcFile, toModulo, @toEx, .F., tcOriginalFileName ) .writeLog_Flush() + + DO CASE + CASE lnCodError = 1799 && Conversion Cancelled + ERROR 1799 + + CASE lnCodError > 0 + .ejecutar_WriteErrorLog( @toEx ) + ENDCASE + ELSE + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF .addProcessedFile( lcFile, 'P0', 'E0', 'S0', 'RR' ) + .updateProcessedFile() + ENDIF ENDIF + + .writeLog_Flush() ENDFOR ENDWITH ENDTRY @@ -2611,11 +2708,17 @@ DEFINE CLASS c_foxbin2prg AS SESSION HIDDEN PROCEDURE ejecutar_WriteErrorLog - LPARAMETERS toEx, tcErrorInfo + LPARAMETERS toEx as Exception, tcErrorInfo LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' loLang = _SCREEN.o_FoxBin2Prg_Lang - tcErrorInfo = THIS.Exception2Str(@toEx) + CR_LF + loLang.C_SOURCEFILE_LOC + TRANSFORM(THIS.c_InputFile) + CR_LF + + IF toEx.ErrorNo = 1799 THEN && Conversion Cancelled + tcErrorInfo = loLang.C_CONVERSION_CANCELLED_BY_USER_LOC + ELSE + tcErrorInfo = THIS.Exception2Str(@toEx) + CR_LF + loLang.C_SOURCEFILE_LOC + TRANSFORM(THIS.c_InputFile) + CR_LF + ENDIF + ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) *-- Escribo la información de error en la variable log de errores @@ -2687,19 +2790,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION lc_BaseFile = FORCEPATH( FORCEEXT( JUSTSTEM( JUSTSTEM(.c_InputFile) ), JUSTEXT(.c_InputFile)) , JUSTPATH(.c_InputFile) ) ENDIF - IF .n_ProcessedFiles > 0 THEN - *-- Buscar si fue procesado antes - IF ASCAN( .a_ProcessedFiles, lc_BaseFile, 1, 0, 0, 1+2+4 ) > 0 THEN - *.writeLog( 'OPTIMIZACIÓN: El archivo Base [' + JUSTFNAME(lc_BaseFile) + '] ya fue procesado, por lo que no se procesará [' + JUSTFNAME(.c_InputFile) + ']' ) - .writeLog( TEXTMERGE( loLang.C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC ) ) - EXIT - ENDIF - ENDIF - - .n_ProcessedFiles = .n_ProcessedFiles + 1 - DIMENSION .a_ProcessedFiles(.n_ProcessedFiles) - .a_ProcessedFiles(.n_ProcessedFiles) = lc_BaseFile - *-- Verifico si se debe forzar la redirección al archivo principal IF '.' $ JUSTSTEM(.c_InputFile) .c_InputFile = lc_BaseFile @@ -2716,10 +2806,12 @@ DEFINE CLASS c_foxbin2prg AS SESSION .c_OriginalFileName = FORCEEXT(.c_OriginalFileName,'pjx') ENDIF - *-- Conteo de archivos normales procesados - .n_ProcessedFiles_0 = .n_ProcessedFiles_0 + 1 - DIMENSION .a_ProcessedFiles_0(.n_ProcessedFiles_0) - .a_ProcessedFiles_0(.n_ProcessedFiles_0) = .c_InputFile + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF NOT .addProcessedFile( .c_InputFile, 'P1', 'E0', 'S1', 'RR' ) THEN + *.writeLog( 'OPTIMIZACIÓN: El archivo Base [' + JUSTFNAME(lc_BaseFile) + '] ya fue procesado, por lo que no se procesará [' + JUSTFNAME(.c_InputFile) + ']' ) + .writeLog( TEXTMERGE( loLang.C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC ) ) + EXIT + ENDIF .writeLog( C_TAB + 'c_OriginalFileName: ' + .c_OriginalFileName ) .writeLog( ) @@ -2963,12 +3055,16 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF .normalizarCapitalizacionArchivos() + .updateProcessedFile() ENDWITH && THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' CATCH TO toEx lnCodError = toEx.ERRORNO *lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + loLang.C_SOURCEFILE_LOC + THIS.c_InputFile + *-- updateProcessedFile( tcProcessed, tcHasErrors, tcSupported, tcReserved ) + THIS.updateProcessedFile( '', 'E1' ) + IF THIS.l_Debug IF _VFP.STARTMODE = 0 SET STEP ON @@ -3338,6 +3434,37 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDPROC + PROCEDURE updateProcessedFile + *--------------------------------------------------------------------------------------------------- + * ACTUALIZA ALGUNOS DATOS DEL ARCHIVO PROCESADO ACTUAL + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcProcessed (v? IN ) Fue Procesado ("P") + * tcHasErrors (v? IN ) Tuvo Errores ("E") + * tcSupported (v? IN ) Archivo soportado ("U"=Unsupported) + * tcReserved (v? IN ) Reservado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcProcessed, tcHasErrors, tcSupported, tcReserved + + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + IF NOT EMPTY(tcProcessed) + .a_ProcessedFiles(.n_ProcessedFiles, 2) = EVL(tcProcessed, '') + ENDIF + IF NOT EMPTY(tcHasErrors) + .a_ProcessedFiles(.n_ProcessedFiles, 3) = EVL(tcHasErrors, '') + ENDIF + IF NOT EMPTY(tcSupported) + .a_ProcessedFiles(.n_ProcessedFiles, 4) = EVL(tcSupported, '') + ENDIF + .stdOut( .a_ProcessedFiles(.n_ProcessedFiles,2) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,3) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,4) ; + + ',' + .a_ProcessedFiles(.n_ProcessedFiles,5) ; + + ',' + LOWER(.a_ProcessedFiles(.n_ProcessedFiles,1)) ) + ENDWITH + ENDPROC + + PROCEDURE writeErrorLog LPARAMETERS tcText, tnTimestamp @@ -3372,7 +3499,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION ENDIF THIS.c_TextLog = THIS.c_TextLog + EVL(tcText,'') + CR_LF - THIS.stdOut(tcText) CATCH ENDTRY ENDPROC @@ -4246,7 +4372,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (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 (!@ IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. @@ -5502,13 +5628,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS C_CONVERSOR_BASE * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (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 (!@ IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) ENDPROC @@ -7739,7 +7865,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; @@ -7776,10 +7902,16 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin IF toFoxBin2Prg.l_ClassPerFileCheck AND ASCAN( toModulo._ExternalClasses , JUSTEXT( JUSTSTEM( lcInputFile_Class ) ), 1, 0, 1, 1+2+4 ) = 0 .writeLog( C_TAB + '- ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) .writeErrorLog( C_TAB + '- ' + loLang.C_WARNING_LOC + ' ' + loLang.C_OUTER_CLASS_DOES_NOT_MATCH_INNER_CLASSES_LOC + ' [' + lcInputFile_Class + ']' ) - LOOP && Salteo esta clase + LOOP && Salteo esta clase porque no concuerda con las anotadas ENDIF .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF toFoxBin2Prg.addProcessedFile( lcInputFile_Class, 'P2', 'E0', 'S1', 'RR' ) THEN + toFoxBin2Prg.updateProcessedFile() + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -8095,7 +8227,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laCodeLines(1), lnCodeLines, lcInputFile, lcInputFile_Class, lnFileCount, laFiles(1,5) ; @@ -8136,6 +8268,12 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin ENDIF .writeLog( C_TAB + '+ ' + loLang.C_INCLUDING_CLASS_LOC + ' ' + JUSTFNAME( lcInputFile_Class ) ) + + *-- addProcessedFile( tcInputFile, tcProcessed, tcHasErrors, tcSupported, tcReserved ) + IF toFoxBin2Prg.addProcessedFile( lcInputFile_Class, 'P2', 'E0', 'S1', 'RR' ) THEN + toFoxBin2Prg.updateProcessedFile() + ENDIF + toFoxBin2Prg.normalizarCapitalizacionArchivos( .T., lcInputFile_Class ) C_FB2PRG_CODE = C_FB2PRG_CODE + FILETOSTR( lcInputFile_Class ) ENDFOR @@ -8453,7 +8591,7 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toProject, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toProject, @toEx ) + DODEFAULT( @toProject, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' @@ -9253,7 +9391,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toReport, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toReport, @toEx ) + DODEFAULT( @toReport, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' @@ -9695,7 +9833,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toTable, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toTable, @toEx ) + DODEFAULT( @toTable, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' @@ -9994,7 +10132,7 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toDatabase, @toEx ) + DODEFAULT( @toDatabase, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' @@ -10177,7 +10315,7 @@ DEFINE CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toMenu, @toEx ) + DODEFAULT( @toMenu, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' @@ -10399,7 +10537,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) ENDPROC @@ -12156,7 +12294,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, loRegClass, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen, lnObjCount ; @@ -12459,7 +12597,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' @@ -12787,7 +12925,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; @@ -13133,7 +13271,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; @@ -13528,7 +13666,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, loRegCab, loRegDataEnv, loRegCur, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1), lnLen ; @@ -13698,7 +13836,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg #IF .F. LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF - DODEFAULT( @toModulo, @toEx ) + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY LOCAL lnCodError, laDatabases(1), lnDatabases_Count, laDatabases2(1), lnLen, lc_FileTypeDesc, laLines(1), lcOutputFile ; @@ -13867,7 +14005,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toDatabase, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toDatabase, @toEx ) + DODEFAULT( @toDatabase, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toDatabase AS CL_DBC OF 'FOXBIN2PRG.PRG' @@ -13940,7 +14078,7 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg * toFoxBin2Prg (v! IN ) Referencia al objeto principal *--------------------------------------------------------------------------------------------------- LPARAMETERS toMenu, toEx AS EXCEPTION, toFoxBin2Prg - DODEFAULT( @toMenu, @toEx ) + DODEFAULT( @toMenu, @toEx, @toFoxBin2Prg ) #IF .F. LOCAL toMenu AS CL_MENU OF 'FOXBIN2PRG.PRG' @@ -22725,7 +22863,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la table" .C_BACKUP_OF_LOC = "Faire de sauvegarde des: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Vous ne pouvez pas générer un fichier [<>] car il est en lecture seule" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMISATION: Fichier de base [<>] Déjŕ traitée, en sautant traitement de fichier [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMISATION: Fichier de base [<>] Déjŕ traitée, en sautant traitement de fichier [<>]" .C_CONFIGFILE_LOC = "Utilisation du fichier de configuration:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Annulé par l'utilisateur" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir tous les fichiers dans un Projet" @@ -22753,7 +22891,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] ne est pas supporté" .C_FILE_NOT_FOUND_LOC = "Fichier introuvable" .C_FILENAME_LOC = "Fichier" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERREUR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERREUR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Exemple pour générer TXT de tous VCX dans 'c:\development\classes', sans montrer la fenętre d'erreur et générer fichier LOG: " + CR_LF ; @@ -22810,7 +22948,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "de la tabla" .C_BACKUP_OF_LOC = "Haciendo Backup de: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "No se puede generar el archivo [<>] porque es ReadOnly" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZACIÓN: El archivo Base [<>] ya fue procesado, ignorando el procesamiento del archivo [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "OPTIMIZACIÓN: El archivo Base [<>] ya fue procesado, ignorando el procesamiento del archivo [<>]" .C_CONFIGFILE_LOC = "Usando archivo de configuración:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversión Cancelada por el usuario" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convertir todos los archivos de un Proyecto" @@ -22838,7 +22976,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "El archivo [<<.c_InputFile>>] no está soportado" .C_FILE_NOT_FOUND_LOC = "No se encontró el archivo" .C_FILENAME_LOC = "Archivo" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: INFORMACIÓN DE SINTAXIS" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cNoMostrarErrores ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Ejemplo para generar los TXT de todos los VCX de 'c:\desa\clases', sin mostrar ventana de error y generando archivo LOG: " + CR_LF ; @@ -22895,7 +23033,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "von Tabelle" .C_BACKUP_OF_LOC = "Erzeuge Backup von: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Kann Datei [<>] nicht generieren, da sie schreibgeschützt ist" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimierung: Grund Datei [<>] Schon verarbeitet, das Überspringen Verarbeitung der Datei [<>]" .C_CONFIGFILE_LOC = "Benutze Konfigurationsdatei:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Konvertierung durch den Benutzer abgebrochen" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "alle Dateien in einem Projekt zu konvertieren" @@ -22923,7 +23061,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "Datei [<<.c_InputFile>>] wird nicht unterstützt" .C_FILE_NOT_FOUND_LOC = "Datei nicht gefunden" .C_FILENAME_LOC = "Datei" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: FEHLER" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Ein Beispiel für die Generierung der TXT von allen VCX in 'c:\development\classes', ohne Anzeige des Fehlerfensters und Generierung der LOG Datei: " + CR_LF ; @@ -22980,7 +23118,7 @@ DEFINE CLASS CL_LANG AS Custom .C_BACKLINK_OF_TABLE_LOC = "of table" .C_BACKUP_OF_LOC = "Doing Backup of: " .C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC = "Cannot generate file [<>] because it is ReadOnly" - .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimization: Base File [<>] already processed, skipping processing of file [<>]" + .C_CLASSPERFILE_OPTIMIZATION_BASE_ALREADY_PROCESSED_LOC = "Optimization: Base File [<>] already processed, skipping processing of file [<>]" .C_CONFIGFILE_LOC = "Using configuration file:" .C_CONVERSION_CANCELLED_BY_USER_LOC = "Conversion Cancelled by the user" .C_CONVERT_ALL_FILES_IN_A_PROJECT_LOC = "Convert all files in a Project" @@ -23008,7 +23146,7 @@ DEFINE CLASS CL_LANG AS Custom .C_FILE_NAME_IS_NOT_SUPPORTED_LOC = "File [<<.c_InputFile>>] is not supported" .C_FILE_NOT_FOUND_LOC = "File not found" .C_FILENAME_LOC = "File" - .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR!!" + .C_FOXBIN2PRG_ERROR_CAPTION_LOC = "FOXBIN2PRG: ERROR" .C_FOXBIN2PRG_INFO_SINTAX_LOC = "FOXBIN2PRG: SYNTAX INFO" .C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC = "FOXBIN2PRG [,cType ,cTextName ,cGenText ,cDontShowErrors ,cDebug, cDontShowProgress, cOriginalFileName, cRecompile, cNoTimestamps]" + CR_LF + CR_LF ; + "Example of generating TXT from all VCX in 'c:\development\classes', without showing error window and generating LOG file: " + CR_LF ; From cd73d10b504cb320c6f67d106b06adf15b203b65 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 13:55:26 +0100 Subject: [PATCH 4/5] =?UTF-8?q?-=20Agregado=20nuevo=20switch=20l=5FAutoCle?= =?UTF-8?q?arProcessedFiles=20con=20.T.=20por=20defecto=20-=20Arreglado=20?= =?UTF-8?q?reporte=20que=20ten=C3=ADa=20un=20CR=20en=20vez=20de=20un=20CR+?= =?UTF-8?q?LF=20en=20uno=20de=20los=20campos=20memo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/test_report.frt | Bin 2432 -> 828 bytes TESTS/DATOS_READONLY/test_report.frx | Bin 4300 -> 4300 bytes foxbin2prg.exe | Bin 523416 -> 523625 bytes foxbin2prg.prg | 39 ++++++++++++++++----------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/TESTS/DATOS_READONLY/test_report.frt b/TESTS/DATOS_READONLY/test_report.frt index 4d9e111014e6544a00ac5fd7011977152ba999bc..981baef4d752ca85b8383fbd658ba07980e5ee61 100644 GIT binary patch delta 73 zcmZn=-owVhz`$(7z`($`QScMvL

t%uHI78<@o=H!}-MFajlnl^hjHQj1Hhc)6St Z3raHc^Awf93Y=M-Co{8(Pj+UF0{~KZ5i9@z literal 2432 zcmeHH?`zaB7|y;)r3m{A-W8PX%h3%LQ7YD6#sZb~Qp2T5Lqy^?B`HYj} zFvu8XJUIyi$etg^F$}8LY5>#1`^L;=*ZqLQUe&r+7gp79auf!v5=A8vQO2*_2J1FY z%Zv~YnX!W4(&J6>X^2qE1+nMHN!&oc2ngDjgs#|thGJ< ztM-L*u}NN0IthbZF1#7};2$)iFu0$I$NxFy mom(NuP))f`X^JPb&30_4w*>(((1j zue(|Zap~l5@O?XWT!>Ojm)WWSNw0vrrXM02li$;*d`A2P+{poVd7)}2i&6-41HQ5qe7@NWfiK5TN%DAZ5_C|4TTef z0Tvs4hvO=rFP!he+{y4&K649?g`tTK`>)-B4gv}TKAeA?1dL_tD^+*UIc1Qtur z`w{K_00^Pa!qFaXT55|z884u?7ogu7>t~jEWoc$YpMx8=pV~9&Li!n`=NX>mT8Du2 zK88CvN3FNwemsWbgHJmCfam>)QkhE4e1y4x$5kP?dw|a?rAUBzkmpm~`1LgpF`VWf z1~3ng@GyXRWQ2zS%wr74{ObH{JN_k}mol8M#~DuZ3jyW{j$7k0nbH8olW_gj6Cwi- zXV5$aJ~;j@ZzpJ;W_S@UCy;rD;Z>u%^J$(1AD$o2b#7EG%ySH%S3b9Z2>tvBr*jW8 zFTf4+2et3+--`^-v<=HE^h@Bw`PHscF7-X=m&duYrO>Z1oIo)BD#NGNIZN3U`d(vr z-IVM6_&U!kBv@*1-e9<~l`55&sNZBb8Y@?o)PZ>mZn%D>oU3W2VSoQ zhvB||>ICiIW%yhfRY?sZ%zJRd^H-NL&5h3y=6#0GY%>iBRDS?|WdByOTqsFNQhzwY zGix33j~K2_tJF;uK7m4iJjP|_+ke7vd_QxaJ)!?ohSyC|$m#$@=*tY3vzgSnq;Hh| zjNvxRuz>(rzt7=@>xc7){^v9Y^993k{?`0UhCAz|Zcm{33Ve7z{QmkNVZP?M4L8_) z!}OmvRriI}-+~|6zowLWB@eIw`a7Q6B`)y_{Cl2PB@QW&`GM#2$~JUK&5v+HeYk&1 zi7yzAp#GU}-~EeG`~p7AuT9;hKT-V3@M}@`zX=hoax=55Iyx5zOQO!=D2aA={3>C4 zs5aR~5EbHKVaub<70u`+i=wX1H~X`0%MXYNV6-@iT{1}~8Ce`>QH&?5@#}nD=Gr&% z^b;i%h_Ln0M?_9&BHrTY4m4OtqHdsVe>d*ebg}gOTOz50^~}96FKsBY)!0d1i=pL1VwBjconDTI4BGu z_>1;n+k1QKT^|v-MM-VcQOdx0-d)@fnH-9AeBuddh#I$v$2muL@=^3cb~L;0(q|o-+dTu8-WY7rXuYPL8>Gx3NUranV{toYF$9Mn$ literal 4300 zcmeH}zl$VA6vxXu#k&LVl+#2I8v_I3mhRb^y8YOWv%0G7uHLy_gHr+1TvSM^@itLlkQ zA3t-w5aRNwKcM?^?6?r6mM*hZ0g_$=b)s(~8k67KsC-8JB-E(^cX^>|CyP=DbC%(D zdcp0NioDEiP{*j%5%AQ`mi%_~Bcz@fS$K%f;tr^5dsGN@v8+N@aVNv~N?QkR?n2|_ zV1nHa-{iQ;=ey32VD4u4BA>ZkkAy!*p<{4g)%;Y;y!@BH`dSW<&~w#guVnd^q<;`>8|trURa*kdv#e;YZ=La9P{2|Z#7Ns(knt2QJFdo+hc+3Hd6eN4 zf0)2LwuXlZ%;Rf#n7};2aKu;V2g~^{^SqRyzMf<_#TN|BQyjO(Wiq7+il?Fat0zPT z9%|4$13oDKC0_<;o@ICu4kwU#j^S0K+xj%mgAeP+bDbMi3-bcQ=as)(K!kpA4X3(? zn3tf2_Xqj6=kH~PXWEA475WwMVSKf#luP{x`qlN^*;44&7)~IFex2b{>zt+A75Tlv z@VY5i_v4#9uW-SVzj=${##X9SK1KaD!{Mx4Rnh?F9jM{@m2$48m6G=$zIPe_)arnR zevjdPd>RD)?=yU^jH;vt5#|G^Vg1#mOmpM!2=gJsXSSJ!3sipueq{d^vfNdYE=m3I z8lG9}h=0OxbwQX5RlZhU5F0``Z)wf6nl_DGFKbg9!Zv!{uxybuQ@} zrN3mj%`$8t0M_p-sNwpd{xJTWVlZDb9QC*2-!R-+C-t%d&9~sg`tbYfjfDA*=Qf;R z^F1?u+EncqR{sEgWdE8{>V@3L0_Y!kZufAA7vMkfyed(oK;~zj&nw%|AvM214fDhK z+mrZ$p#=4>ynp)_qxcPcc)vDvd;N*xcZT19zW+stXpx(lUDVN~aa_j-`^9FJB;)O5 zvNIk}q9mGZ(kh+6FM=c+aU4@49yZQ-)LqetUb4tPs7Y>rSx$S0I7(=?BzDOt8KIS7 zyskKU$s+&g^e4fLrX@L=WZkje!3;|~HpugnxSwrn>qqwLA0`=mJE5$aNFeJaJ4l=i zubO0cS&-zo4SY4rVFNk-OOtF4lZcSy`TtsyNj$QX?QkY1 z{F&T@Y~UAdK{mFwRtrKtkypKPJ(pks*Q(CqMmN#`(eg}^6A6mcQLQfDNXOl(JM4}U z=Ug1c*-aDzWOXJxHml}n6HRYMmN=hV?R~Qy8p)____SMFdPZLL{G%}q?Qbq>TtUv# z03pdMn5{$W&Ln3)!cImvW4>GboSaF&kMe3Iq6TK82T9-ZDsO+=p+DXr$y@&fE6k<) diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 793fb6c9832effefc8008361d42a75524ff236e1..c2fc92665c8ece10bfb8a5949a6c241d1394c558 100644 GIT binary patch delta 17630 zcmbW82UrzHyT{+%bM{ma5Rl%R4MFT(q>0j`SYknhqoN21SYteD5{-$8nqxBNvwnUt zYNAnN6npOl3$_@IiZO|aiCshm?|*iI9KE^sKF{TO*7N_p@9gaC%gx8`dc<1Ne^v6K`$#Rn^1L?^oLMmq%U4ZRXlA<)irAJ zu5qUHippkW|1zr5o}eslM?2`F#Tq@Wep%VvGVo|*!-ZmvBc)f8T!>I8)bj07Z@(y2 zjV-zMtdjPNRZ=$<%GjV1qOQ*b!5-JTW%=`Hj7t+$O#__lij#j3D7v~vM-eD)i9gn< z@oH5~L$nP}?sCF8b9kNUl}40CO}wy2mGq@$?Xgxu3(JjTp*_N2bl`XJ*qM*dfIg6qNZzYZrIEmKcw zEoV=3gU#V2_b9els6#T}EOWF(oZ>v`6!(|Q|Av-vJxl)gX4wE6-lp1a4zt9bj!2Dw z!4CK3kNdjWp)we#blp^am6Yy^8$j1R6Qq$r1tJt(3P$?(lR=hcg8ZMaI87uRZTP%eFJk5<8$d5_Pyx zV~-|!qlu3LsIsHnM&8i@^t2Pe2xkDCKi9QgXRMO)d4)DFaaQf1M_5{(Z6XY^3_R;A zw< zGO|N~y}SVKr{ZZ3+zp@l$`G8jsgitbYl3ha6_rtzbr(EDvbETiy9+*+rsc81e=K9m zgQfRutE6R?#pP|ARM^&p@Or4ynFur0wNi^i2W`Nk(G8yhdN!J>ElbK>Es0mXgzlD> z=e@k^JTbVsJS58+)HJW_fH=#Ni{3)4W#>g#$1J&~r#XO---ix0fxLYE zr0#`Dt*4H@J>ruhQc~mi*91HCpaagu zSpNMqMmksuueo_8Qf<{rhs{CRay#n|bK7B8W1tN$(Hp92jIrF4d{D|QH!nB~-7J+C zyqd|QWNTkHO1vZ=1Q(?*34PcIha37X$nG6rK6otMHHyBalID4Gc zLO$~!I?pG=y4TPdN{g@AS4nQQcjrh|YOR*Xrz(3idi6_=Jf`5z9r;{wfD47~c)R$x zRy<9ygkN%M+Xo}-CLbtN@iZ2-tI4m%7biyXIr)2e#nZahQf+Hz${nall{?V##ii!` za-IH%LBs$?U?Bf_5ZxR8UxVm*+26HU!z#(-^yVP?I{niijz-z<8ooA&|7!TpgZQ0g z@8#D9@h)$T{HXn3gDAdqwDiB|8${Qnxo zy4Kc>qDk(-x>1~X#oPRqbM4HU<5VTBa8}wxd=<;#tJqp6dChagLsn6lE%^Q`@E zz2@&FR9Cr5bF2#tL;*RXt+1^9(akQ!wYGD1I9EvlE(n8d1W(K8tARqaCG2V^;T>7W zSms>~HwU<&EHVHUj}})Nz42@eLVyzy;52+87+e>H1i=J{0ljc(Y;8{jp^U-7~Px9Pr%^Iw7sgjIhfGk~q3Jm2jOKA^plP8W< zxSt)35qzqouifQkna`!iI;tFMnfsH!xW(0SrRk!g8A;s;8nWw@|8ZMsZx`@Jp5fP%Wt>^f8~x7cgZK~XlIpV>xBfC51>E& z{sS_+WPSs;EZ1*zZyAr)*vji`5Ir@?P1}HM25k$a-!EYGQPzf5NHFJm;<7fDKG(hD zA?r^XF4w>_+_5P1k>{JC=b}eV7x@C1og?UlM1H;l3p;A$YmBrsu4o=J3b&zp97s=d z)kQtego*b1B6PcQlnj96AmKGBo8=nx9=1BiwWMdy|+}@45JuB|EfJ4Ng zDvi6XZcrx9c#n17B)N(aJK5Mxl23U0d?JB}^b}Q)Ki*VSl3P@4QA`bKgsCJGmy1h{ zOw8;V6B!+o`Wf51Npdpyf2S1jAoifY#zT0EJ>MiX5uLwhLElS(LJ{lrz2xECd6!bk zK&htutTCq8+&t4nHu-zWyVdi(ic3euxJE*5zUkgR#iAioQBm@^k}mt}xVR(-%-D(V zB~RA}2Nkm|O(@DOF~t-W6%-{Dj9AHD!Rz$Fk-BPSFC4;A7PeVx)a?7Cb?3!Q%r+I4 zZfusE&6ToWBnR%#tbLS~6252n zsdX+q;Sq2vuKZe81Np3^f_#%=-&t!%8$s@__T_6oU_C+3TxO@e26YL*z!^-z>s`XIn$X~io3?y(C}x4U5V|Tsd0@N^NYf^^jg>d zSZlVS;g}cclL}2y1v#d5zbb`oD9%)po;${rR+2TQu)!S`zg220^kLJsVt$QgE4NDi zV#^2Y*jA~rw(OC74%@d!^3or8tW@B|!uCtfY?_xw@7nxHT?_Is)3VTvym7fXSu0uk zHYr4S&ZcaWyhQ&RwrCsft{>aEP4aO0N#LWeA{$CAm{8x4AJ|{pq(&mCnP$5b9`C1C z3N@tSf})a?qJqNW$ow36z7+SeSA6!A247mCDLXeSPcD+AZy9lb8gq}W-68o#CbUspHnpx)Qz07ssMcC{LZT^u zoPB4dq>)Tx3QH!Xnz9Rua@uxdwmT(v_aWUBC!PU*Y57hg5=~wlPR<=)S;=bVzxkBp;y4>R?opQlL4;A1S#9j8@kBTO-!u@!Br?UC@a1RkgUfjBd z!CG$8%QXne?B;$c!2Lf?vdy~KZ5M7bC>MGkI|&^4h1{LJWUwyW&zGBwvR||dWb+P4 z?oLS|veCL+GTVIsgSV31J|Ovc?P|&k*kC!}D{NFkWLjEgVoZ9^;wx)R zH2dSA6yBpKrq0dR+ziZPIZ!Q*Q_KcAPASjRncj8vD;yD7RFpO8CL4T6Y9g#>vkqbE zIt^!EACkN~Tpy{Fbx@*NW^_z!d{Rs_e{4GDE3SsGxs)4rAIpTpn4{ZR&|xW9Y*oS% zIhL}qhY?_#jc2nDOCIq%$162B)z*;QqgPB+I{GRyIx;=7bh6@gsrB}ZkB*K>%B&3< zxu)V7Q4iOtaYL2)IJ(_5BRO2ZnMX^2xKu6ONz3xF_TgUKUK_D*ElYl9IVg& z@)a-D(Asp!pn}QK+9WjKCMT>ZJk9vcfs->@reqZ!Sw%ha3Xn3THB=mbN58k&yrWX! zfYr5*H&V5HN2R<{?Kznm)mK|rYZoV8su7;xx&$%0)>4~uw)wP{HB?fNZkkxq-&r|B zOIbNNnaK$;nX~QTtHp{1P{fglWqKI`%1RBV_<5}%{JwXD>C)*%+;5Sm1HVT}Wfyjw2%OV_C-~Z!yf5O+SuR^li3?Tl=tG$0b*f(E-XC_B@avPl+~- z&&@W)=MOLViQPXg1;ms!RSM{7TwxC8VRVnEBQ3be8^I^Db{UJ0&Ww!W?-ZlM6xZwb zy@>TcffXl(O+0~YX);?567`+gz7uGddmOuYLTVPGP35QhptGZU#KolJts$jV`roEB z#q<|zbyD){)MlXKk$AJ?qkkT(piy4ckp%Mar5|EtQ;Wuju z+{x{Y>&uN`nWs_95jGvQ4Ev}olv{KIMo*!M2 zO>z(Sv%C7w^<-3VduaXDm)utP&3lNw!|g5V%gw$kvs`(TM~@Wen-z;~k zIk&g1FBfeSsu596mGPs7q7h&8EOM@VoXv-;}rI1xfCHrr7*wq zNP3Q>v*qWJIj5YL^g=az>pb$IVQlJo$yYedmYtXU9AZZES~}O?>_m3Aab+LgQF^>7tZl!^V4RoHTivS>s9ySm`Cn+bu6M5;`i+ zlvRW@FWXd%3BuFCVz%+B#;r8@mek!*$YS%JO1?rU+lUVvY-IDVTtoS;E4%ho3JGip zS!>0v=*v*Pg_&L%0f{eP`POTCWh>@YiC4hbN-4m|o$X{Nv7$;T!pt{t@$D_IRZ=7` z(gpGb$y=T2m0jzASH`!nu`}5>DnhBeyTWO89I0?huUdZ(g=14|nQzDA{Dd9~H>-?R z4AHfQ%9vWNt1wpK#H0w8@=Qt$6O}tmgjv2r-rOV^YCXyPgu1q;l7+-Q@`c(zOHGs9(6v*K)^ah)z(T0jsZnE_nZG@<~&u;P0 zu=~tKi_iY|S#SP1{XR3}QxoujH<>LJ1Q%AO)w+lY57@7~z_n0v~ zz((n`UZU+2He09l?6~78KT(67VV(vX`Dau{ntZzs*qA0H)!c;F&exr#FWGgS)<@LY zeXiGfidhcK8=t~O)=97R7HZgAdToH{7Q)Oxu|;FHOplAFwP4%z+9sMV5gOjwtO}JQ zd#Tsjiv1&)(Vz_!S$o#ffLgz6&r%KA5OGvz_O?OmFTUTIEi-5vi(cK?G0q9yIXg4a zhyi#zlDQeR!QzZa7HPy)XGgN(MqKsFNH)`mN|yFw>y0>RTQ645`IBV!lJlBm=4*qC zZR^7#ZM44r2Qql8Z20{~_lV7mjgLu)eyu}(V(;4Eyp%y~6+dtEAa>M7>nG+6VSnI! z(L99N+T!|O4q*}a#O_UBTbREY$tH5M^Juoj7N>og$9CJIxy1$S7ydb9ENjp}>!BG@ zB6rICV9BW+#v>ywJvnjW6mFA8Cn`3s&idnf+={Qs6EYJblel?YaY@0L;Q4HF18uC} z%l0+Uo)(-+=i6yj8mWRdQe>&cS-Y{XdZ>2#4c0SHJA{3ir|mDSW7T=u(IWY+8Z}01 zFy~`~do*^4_liVmxWZiMX5~aRU=z4Mbn*{GE-Io4;3?2^eGfEN&%X(J$^f+!D$)hI9yI`S6LEbzDBvCs+F zF-9Uw--D+^kG@TWl$ExFmq1Vbg$M~M?FDawUV=^HZ@`Da*Pws<4d;SSf_?5F2K-L6 z3w#dOryhXdKTsHk%P24ey3buAu96q+*M@0Sr3u+t88NrFH=~0FQzW z#|||zC~^W1fc8PnO~CG)p;PfaWCYk3JO}#yXGERA!Qeg6TdRno!Og)Bq5pVJln6Fs z+n0h6U%k<^zA&^0_lNFNO_T}l3jPTCy&9sC;Arq3=pC;xG+=DF(o^V%SR^Ndu@Q=k z;8j5s=v{DMa0YY-2Z82*mw0rS8 z0q=+Q7DZYH&HzV4-^L!?E^t2$hOMhem60L^*kJ6zK0QRr!FF34GYsQkSPUrYDN+j9 z4BiNRFGC~~ct5ytUy(xI66qxPCvacr)tMqa20sCxg|=jg*z!0v%i^ z(n@eVI1#$tSdqR3r-Fw;SK`dj35Glvs^*Hc)gn@B zJEHmE3h2=bL>dle;5pFWd?r#McnSC-boS>WO#=T1JQw;K9Pfg^0_QIlX)ca~;5Fb~ z(7GkKD0nTnE%fvy*d;p)!+IFj!cd9hGI$fXdK0>P3w~W_k5~YH2)(~lq%817Fl`m- zy8|NSfwlN;*mdXz2Sqvx)`NRP_dFp|88`$y75d;wG{S+X75I1P+2%7CGZ;F-Z~}V& zIg!G^@!(g`!Iwpf1LuJULVtWkq^aN%@B!$;t0H{@eh2(Dw8t%x7JRi=m~d4GB(7l2QPyj_ykJ@7(Y3nub|6B73G3$ z@g!(eD*SpuMXSNC;4qDf7&ZlWfkVL;p>yq3bPwDCyaKuk$189ra4QFunVJQuNbN}U z0Sx`1cj7REKLS@l9|=*>EHDE$tgl+KWZOkglPeLIW!ttywf&LBKJ{!R^!7f>7{X`YDcE-iPPLou$ z1V<_OCin<+@5w6K2fhQ|gKZhhN4P*EqPyVB(EpyRB1f=fL>?jl_!9J@TPlhJhk#E(e~-PG&%pz15dW_M+Wx7cKVTSy0)^0DKU2{o@F(D( zp)X)|rbQ$cA;8g{!X|Ja49z+wt-JsWWRMS21Z18pH=AH32=ZWzK zXG1^ls-__DGBXVAx~XY%l$yH2un+tY+M&0a#(}SZlc95x)wBfs8+Zk@IbBUV!7ssE zpeGMf(+#kD0|YPV_#8DkdSQ-$XFy-VYfdz{BiL!UnhxcwX#m)q3j-CXX{lLFU&HVb z_y_2vbJgVHjkF1T89IomX)5?Q_{l=t!8dB!2G%25hOSjp;t4f1^+Emsb~&Y{Ti4YT z;EUB2+~|gyO7Vl91>mp1V^tE(!CG(e!}uS9VHcpKt3+q~kW7F_LH7=kDAAuN5aDwM zbi)XV)_~K%anPAK(6q37I`$UFyz5*T&>ZvTuHg5L*!{8*wa>>)I5g3t_J1l^VYgdDsKTnwG4 z)zB#LVemW9_!$?i2R{aPgx=(!p{L-N;K$IpZW=N)MXrhHx&}Hd6x)U|FqmL4g=%PJ zD-E3jPX(WWe%47t&%x`#ft@w9y9?fXnjwmTrLG#<8>yjT;H%)@p-1)9&}^_8;dnmu z(PRxB1UCf>DH?h>UPJok$os*O6Eq}DL$37#1_|M_{WJ~rc^|)A3&mpuo(cWSJPqZ8 zdw?6w*UTtk82nc!~F$5&`50z4o5 z6#BCHKN{)@!xu0ZzSPh<{Fjfu;9cMw&<)pVXcqV!xF>XY?!wUdo|ewy*bIIQehK{?$3E~Au+M!|@K8&Kz|X+{hFqT$qcf55ZbwFj{hkiQx!Cyz=;3RNiQytw6)lngMFxaJq zj#`H4XbyNd*!)d*9o@rW-x2R+Fa$^HsDG4>T)<<&bD^6?>nH>~2|NUPEsj>;Dd4Nn z!{c<+5j+pP1lkwb>j3a#a1wNNl8$o0+rZ6}b+jczNAti}JrV!!0Ui#}(QX(-EI{sq zbo9#*9lZh@!A_aD7!Joyh-~1n;W`RNI@}rD8ax1c@mPEf4DJQK1U+WDjuwKKf|oJ7b~3f;Ad?%4!{b1K#0{_`eenzYbeoT`;LopaA;Rb{(0(9$3*HL8l>Kz6kaL ze*nE0>GCabSMYA=i#S}n5_JdHK=-o#!PT)-N&(N)qkM{*J{*jGS--F0sIvDn~(K$7hDXkoU5mNys>nT#!Cix zKJ+h(^z=4(E!bnRo{UTM$p2vY9)@Mh^mOzqJ?#Pi2>t`Q{W?9p0;>X$^Ofr9gRSV| z7<4~)6ZDh=dYTXJ0$v9F^*KG=0#62?f$nrsPn}~CcEN?vKDW?A;IF{RKjYj#^kjY) zhEp(X0gQO4r-R_f;4#n8;#YcV5r;Vu$bbK9ppJS2jRLm?7eMc}Gtd{{c<^0&d_UuA zpdH{s@IvT&-UfOBW?-$qfxMdFH$**=(15!`mxmh6^brhYFc@1HC>X~E@EPzx=t+1d z+YG(}u55z~wl&aw@OAJV=pVWn=sDOBgisAVE7d@e@yKw%>(UI=cA$ZdgC~IpK&K5g zkg*q5Tkxup23l8OHc$x++hI6UfXc=jXf5~}*mt6VhQfabtPVyuLXUpmKuvlhM+Cq3 zfq_1pYoMv%c=zkmNDfmf@@a-)Ia@mHv244UtLEqsA_!`)2J1&6Z3HSzh5wtsY zpk9I>fuo=&?}jZAlN`Jq+Wg)g12u&~2*E^zzJ{YUSOqrjHPH5>7>cujr)o(&!ZU2_eMP9pje?E15Te!Fj=T<`<1-2;sOriTW) z1j8d3oduXQT(<<>0@dd$u!D zND6XMB%bd;=XWvE32-y;eCQAR7_qyFApq~_V>VJ`x{(&bun2~c(5w340IvpLhCVzL zjQ}45@5?q)4qkh`QxO@PBIkpSo?)b=;J)C|(78AsgZqOk-#3zA!GCp4!y^iA3%wMt z#Z$n#W<=#?fa-{mTBqaX5r$ysxfjsF3_RoDUC_XlI9{`)D1H_g#t-eBxxB!lukKe6s!OIM0 z{7+!~Vx7Llo6!fDZ@-2k{;xSL(IdS1L}CIxM1ecEC7Oz?_bIq#OS~u`>%D`l7r(!t zHsH0`KP^Po8v)HT-&V+aXCdpIfULI*_yV*Ib|_CF>x}}RhR#Hi+rJGO1NKLfI|xax zrY+JpGYme+a($5Heg{J`xB}VONGgYbcR~+ElKF4&2(axlEp0*$ z`2ai-JXkWN0bc_*iqPSWK}Q?Gj=0Os(23%9 zUrvjWFPuaEkPhyn!QvK-<-R+{zW|0m0pDT$w~NG!26$K-J=tUZUI?BIJ_-Cf# zNHD;yhwG^~mSc4kCK*_b<#-#G-xc6h;Ji=t!RSWGIw$>63~Om1MU=$U{n2Jcyq#R;K# zBe($EwcJ34pA2*^5n~SC4qbE;@xL=d?Q9r=D-1M2Fwy|SJF@IvcoZahg# z58hS^8N|A)VK#8%;&&7WevM!Mr{TsRbRO@9PSy@?G}SuNtsUHWwAL}o+Huqj>&a>5D`VdE-KPRK@iZ`kpL=+KmbdO=9t(LjrABOi76(g z7^BACd+!x{uTc|gR73&4dv*_a^nL%|cU}L_TnqQ_er9H8XJ%(+cgfwC-d|OCFVhXw zd_G&Et}{$_16_r@<))y4KF%QtBDMHlLrxA7y*!BQD`U#-3Ch%RUmIPZP_3hdmF100qxMBPek4@a zp^S2p6A=;xn-1>t@@=55wjtL}72+>Kg;-yWG}b7DsKX1D%D$>X++))3k5gHjQujNl z>YE1ck7zhmUF}E#mF2Ey@^3O8)XUHM$d?x?AF8^$Im^*XjpO569osV$mXZdIKkzUrkE(U&H zoW_)WG(0U7h8?b_KCb6loAL%grHQh16=Ew_R2)t8LM0BaP)|_X;QE*As+-naT^Ln} z9qoDT!wDDS(@=B0yqW2*qm6tkEmAeFP1WM9R9>dkW1^~+smHNGhwg?qZPt>vnd$Vg z;N(`QjYw@yRokP6UZ~+yKPqo6SCO}`A3bjaFd*oM;LVz<|E;eOyYT|8E0N3Gw@#+6 z$AeUnrcuXzd=S)QuvAz{QdPATdE)RgU-m#lg_vYocRV!is-fBzU4Om2E#b2F8LGW& zE;|Aj6e?eKJGv_lxJPtv6fehD84MQ<)z&DTH%o-6$%z)O({1G@u8TVI(YCRwI+PFL z_NLJ%LhU;6((|lw6+Spud(-+8Uad7Y@~FFB9*NqM9TF_y3FL0;h%0_m-Bs2VqF_@U zfJ?nz9%ZsS=^@;(HZ?x!t`bZMC*xIIr^GaMIJOCKQA7Xepd$tZrO$<#DDBr@d6MriEqR*70)F%XLaHoh%D| zZ!__ybYj==)U*Wi(B}7(#g%#4SzcK%8s=#tm3QWCr6^PHQ}tb& z+M$sg&?@NCH}|5ygK63&w|ZU3T(mNB3z2q>on@Q!`Q8p4zN`{=t-1=mDmNBycO;X2 z;yxb;_2iB*chtSZXe7-mD+)s=iI;`Vq54R+=g$qq6cR)^zx2lGf z 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 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 4f9f6e0..e7730f2 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -549,6 +549,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -620,7 +621,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION *-- n_FB2PRG_Version = 1.19 *-- - c_Language = '' && EN, FR, ES, DE + c_Language = '' && EN, FR, ES, DE c_loc_processing_file = '' c_loc_process_progress = '' c_FB2PRG_EXE_Version = '' @@ -649,6 +650,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_ShowProgressbar = 1 n_ForceWriteIfReadOnly = 0 l_AllowMultiConfig = .T. + l_AutoClearProcessedFiles = .T. && Por defecto limpia archivos procesados entre ejecución y ejecución l_CancelWithEscKey = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. @@ -659,9 +661,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION l_ClearUniqueID = .T. l_ClearDBFLastUpdate = .T. l_OptimizeByFilestamp = .F. - 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 + 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 l_StdOutHabilitado = .T. l_Main_CFG_Loaded = .F. n_ExtraBackupLevels = 1 @@ -669,24 +671,24 @@ DEFINE CLASS c_foxbin2prg AS SESSION n_CFG_Actual = 0 n_ID = 0 n_FileHandle = 0 - n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext - n_ProcessedFilesCount = 0 && Contador genérico de procesados + n_ProcessedFiles = 0 && Contador usado para los archivos file.class.ext + n_ProcessedFilesCount = 0 && Contador genérico de procesados o_Conversor = NULL o_Frm_Avance = NULL o_WSH = NULL o_FSO = NULL - o_FNC = NULL && Filename_caps object + o_FNC = NULL && Filename_caps object o_Configuration = NULL run_AfterCreateTable = '' run_AfterCreate_DB2 = '' - c_VC2 = 'VC2' && VCX - c_SC2 = 'SC2' && SCX - c_PJ2 = 'PJ2' && PJX - c_FR2 = 'FR2' && FRX - c_LB2 = 'LB2' && LBX - c_DB2 = 'DB2' && DBF - c_DC2 = 'DC2' && DBC - c_MN2 = 'MN2' && MNX + c_VC2 = 'VC2' && VCX + c_SC2 = 'SC2' && SCX + c_PJ2 = 'PJ2' && PJX + c_FR2 = 'FR2' && FRX + c_LB2 = 'LB2' && LBX + c_DB2 = 'DB2' && DBF + c_DC2 = 'DC2' && DBC + c_MN2 = 'MN2' && MNX PJX_Conversion_Support = 2 VCX_Conversion_Support = 2 SCX_Conversion_Support = 2 @@ -849,6 +851,9 @@ DEFINE CLASS c_foxbin2prg AS SESSION PROCEDURE ClearProcessedFiles + *-- Limpia las estadísticas de archivos procesados que se usan para optimizar + *-- el procesamiento y evitar el reproceso de los mismos archivos, por ejemplo, + *-- de un mismo VCX compartido por 2 ó más proyectos. WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' .n_ProcessedFilesCount = 0 .n_ProcessedFiles = 0 @@ -2030,6 +2035,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION lnPCount = 0 lcInputFile_Type = '' + IF .l_AutoClearProcessedFiles THEN + .ClearProcessedFiles() && Para evitar acumular procesos anteriores + ENDIF + *-- Funciona y lee los parámetros, pero no le veo un caso de uso claro, ya que si se eligen *-- varios directorios de proyecto, la compilación será errónea. 12/12/2014 *.ReadInputVFPParams( @laParams, @lnPCount ) From d371fccccb4963a77ff54d2042dc51adeb0b3b93 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 14 Mar 2015 14:21:26 +0100 Subject: [PATCH 5/5] - Actualizado del log interno --- foxbin2prg.prg | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e7730f2..f16ee9c 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -143,7 +143,12 @@ * 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) * 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX -* 10/03/2015 FDBOZZO v1.19.42 Mejora: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte de errOut e implementado en writeErrorLog +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte total de comodines *? en nombres de archivo para procesar múltiples archivos de la misma extensión +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nuevo parámetro para permitir un CFG alternativo (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nuevo método API get_Target() para obtener información de los archivos procesados (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Mejora: Nueva salida de archivos procesados a stdOut (Lutz Scheffler) +* 10/03/2015 FDBOZZO v1.19.42 Bug Fix: Arreglada la cancelación del procesamiento con tecla Esc * * *--------------------------------------------------------------------------------------------------- @@ -213,7 +218,9 @@ * 03/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir proceso multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Cambiar clase de base de FoxBin2Prg de custom a session (Agregado en v1.19.42) * 05/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Agregado en v1.19.42) -* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Mejorar la API para poder obtener información interna para usar en pre o post-procesos externos (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir configurar un CFG alternativo (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Crear un método API get_Target() para obtener información de los archivos procesados (Agregado en v1.19.42) +* 10/03/2015 Lutz Scheffler Mejora v1.19.41: Permitir salida de archivos procesados a stdOut (Agregado en v1.19.42) * * *---------------------------------------------------------------------------------------------------