From fd84a0915e0748ff9c3fb262f06a3ebc166c1270 Mon Sep 17 00:00:00 2001 From: fernando Date: Sun, 8 Dec 2013 15:46:15 +0100 Subject: [PATCH] Changeset: 62 Changeset: 62 Soporte DBF en desarrollo --- TESTS/DATOS_READONLY/fb2p_test.vct | Bin 10223 -> 9303 bytes TESTS/DATOS_READONLY/fb2p_test.vcx | Bin 2885 -> 2667 bytes foxbin2prg.pjt | Bin 139623 -> 169092 bytes foxbin2prg.pjx | Bin 1713 -> 1713 bytes foxbin2prg.prg | 159 +++++++++++++++++++++++------ 5 files changed, 126 insertions(+), 33 deletions(-) diff --git a/TESTS/DATOS_READONLY/fb2p_test.vct b/TESTS/DATOS_READONLY/fb2p_test.vct index be2b80b47aa4750dfc154d94b3a811258d6ddf72..38d0119e98d686f92a5b777916df45cf2755b864 100644 GIT binary patch delta 702 zcmaFwf8B$Ffk7plfq{W>qu?jTi3*&XnVA|TCbKAMPBxPkpZrG3Yw`>!5fGcvWwM{N zp>SzlVtheSenEU{aY1TwW?~L6*W`&((v#OKhEDcYOqpz_;J=w$)|h#6pTZs{=A)Bq zSX3v^QxllHM_QsDL$89Z0weuEJ^if0YST!!-xF)7zyuY*z}U>SxFl5}wV1awPoXR^ aC%=dnp3rhjb4oIE-sYtyZoVXK%m@Hv7C)*0 delta 1146 zcmbu9&ubGw6vthvCu=BtiMRRwI(WhsMF0ftnOygO;!-Z zAXEe|Qs$)o6(xtBJb3iv!Gq@>J(Nn1Mz+4$G`|ET;IPB|dVJq^-)DBe-8j@w6Ebs1 z2vK%Nj+7l3tOo-xqvBP3%B>xNwr$=GEv93PwN-fZdx(%#WA1W=jG2V~zF ziPnBxk?U#fdvbzpAICu)znrY)-mf4Dk~|@=l@M9>E|Nx+%)?UtI%KpgEPu}F86B4O zyEilXg7=6t9^k3pv`UqM{k_Ty99RX))S=+8vcn6mVLITJYOvuJ6Hw+3FbfQK-;(1` zt7_UDR@d~jmdUSaP+%Af`qC{er+fEE<8~_n9#|9%i&hxWQk6L-D&c&~Wd)gPlR2zp zm{jI3Ne#Zi9&ENNV8NmC1Kvtsjv^nfl)er;MWVQ}B(NzI;8YfMO3j0=SE|A_7<7?Sm$st9}wz= zXia(FsdKMhB%IUk=OW?1p_V88Vg3i@T5mzynA_t2i?~C$E!j=C=HIvux=t}LaesK* zx;<$7BsOfL^_Ft5tM|saq=%XJGw$`28%G+_0iWCr(()jGm;D$%}Y^q HxLf`WlLuK! diff --git a/TESTS/DATOS_READONLY/fb2p_test.vcx b/TESTS/DATOS_READONLY/fb2p_test.vcx index f7b847c67ca9a75dd9360dfc07c7fcfb708f98e4..0e72e7f79d44fb29b3129c8bf46f1a57ba95a228 100644 GIT binary patch delta 165 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 RNPs-{{y&&nZP97A{{>gqifsS@ diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index a9a20d114695354de67ed47c8f6b5dc1414bccc9..205a937f2a79906773ef96e5109a7ffb1e8e3a4a 100644 GIT binary patch delta 204 zcmdnUyOEd0fR~43Bg=Lcc4GrWGXq1D$%k0%Sr0KVFoaC*VN;o`#VV`|lrb?dwg8HO zfm?`zf|~*mn3|Y?1cHJ1H4rNR6`5O3&SI5igy>zvD#B)AYHny^I{6r@Gh2wWzn`1u z^LqlUDGfN8-3j+`fsKdb05+n-(V2ePO0Re~~1R{Vy!O+Om M%xH2R8^khI07YUY{r~^~ delta 186 zcmdnUyOEd0fR~4DBg=Lcb|W)WOA~YB$%k0%nc@W|ce1HZ)?yXbg$NrkK!IC`f`Xd@ z5SW^nfP{L0_&pFS7@3ZqELGZl04T yvWibuU}ez)X;lanU| [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug]' + CR_LF + CR_LF ; @@ -362,7 +363,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.12 + n_FB2PRG_Version = 1.14 o_Conversor = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' @@ -443,6 +444,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_LB2 ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + CASE JUSTEXT(THIS.c_InputFile) = 'DBF' + THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_DB2 ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) + CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2 THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) @@ -463,6 +468,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'LBX' ) THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + CASE JUSTEXT(THIS.c_InputFile) = THIS.c_DB2 + THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'DBF' ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dfb' ) + OTHERWISE ERROR 'El archivo [' + THIS.c_InputFile + '] no está soportado' @@ -950,6 +959,7 @@ DEFINE CLASS c_conversor_base AS SESSION DO CASE CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X + *-- VCX, SCX, FRX, LBX, MNX IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) ) THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T ) @@ -959,7 +969,25 @@ DEFINE CLASS c_conversor_base AS SESSION COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_T)) TO (FORCEEXT(THIS.c_OutputFile,lcExt_T + lcNext_Bak)) ENDIF ENDIF - + + CASE JUSTEXT( THIS.c_OutputFile ) = 'DBF' + *-- DBF + lcExt_X = 'DBF' + lcExt_T = 'FPT' + IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) ) + THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T ) + + COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_X)) TO (FORCEEXT(THIS.c_OutputFile, lcExt_X + 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)) + ENDIF + + IF FILE( FORCEEXT(THIS.c_OutputFile,'CDX') ) + COPY FILE (FORCEEXT(THIS.c_OutputFile,'CDX')) TO (FORCEEXT(THIS.c_OutputFile,'CDX' + lcNext_Bak)) + ENDIF + ENDIF + OTHERWISE ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!' @@ -2243,10 +2271,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base USE (THIS.c_InputFile) AGAIN SHARED ALIAS _TABLABIN COPY STRUCTURE EXTENDED TO ( FORCEPATH( '_FRX_STRUC.DBF', ADDBS( SYS(2023) ) ) ) **** CONTINUAR SI ES NECESARIO - SIN USO POR AHORA - + CATCH TO loEx THROW - + FINALLY USE IN (SELECT("_TABLABIN")) SELECT (lnSelect) @@ -2489,7 +2517,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ELSE ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontró ENDDEFINE en la clase ' ; - + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; + + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; + ', línea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile ENDIF ENDCASE @@ -3252,10 +3280,10 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) THIS.doBackup() - + *-- Creo la librería THIS.createClasslib() - + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -4557,7 +4585,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin lnFieldLen = laFieldTypes(lnNumCampo,3) lnFieldDec = laFieldTypes(lnNumCampo,4) luValor = EVALUATE('loReg.' + laProps(I)) - + DO CASE CASE INLIST(lcFieldType, 'B') && Double STORE CAST( luValor AS &lcFieldType. (lnFieldPrec) ) TO ('loReg.' + laProps(I)) @@ -4572,9 +4600,9 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin STORE CAST( luValor AS &lcFieldType. (lnFieldLen) ) TO ('loReg.' + laProps(I)) ENDCASE - + ENDFOR - + INSERT INTO TABLABIN FROM NAME loReg ENDFOR @@ -4678,7 +4706,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin #ENDIF TRY - LOCAL llBloqueEncontrado, lcValue, loEx as Exception + LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I llBloqueEncontrado = .T. @@ -4688,14 +4716,14 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin ADDPROPERTY( toReg, tcPropName, lcValue ) EXIT ENDIF - + *-- Tomo la primera parte del valor lcValue = STREXTRACT( tcLine, C_DATA_I ) - + *-- Recorro las fracciones del valor FOR I = I + 1 TO tnCodeLines .set_Line( @tcLine, @taCodeLines, I ) - + IF C_DATA_F $ tcLine && Fin del valor lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F ) ADDPROPERTY( toReg, tcPropName, lcValue ) @@ -4705,12 +4733,12 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin lcValue = lcValue + CR_LF + tcLine ENDIF ENDFOR - + ENDIF CATCH TO loEx - IF loEx.ErrorNo = 1470 && Incorrect property name. - loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' ENDIF IF THIS.l_Debug AND _VFP.STARTMODE = 0 @@ -4758,7 +4786,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin ADDPROPERTY( toReg, laProps(X), lcValue ) ENDIF ENDFOR - + ENDIF CATCH TO loEx @@ -4808,18 +4836,18 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin LOOP && Saltear comentarios CASE .analizarBloque_platform( toReport, @tcLine, @taCodeLines, @I, @tnCodeLines, @loReg ) - + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'picture' ) CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag' ) *-- ARREGLO ALGUNOS VALORES CAMBIADOS AL TEXTUALIZAR DO CASE CASE loReg.ObjType == "1" - loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.tag ) + loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.TAG ) CASE loReg.ObjType == "25" loReg.TAG = SUBSTR(loReg.TAG,3) OTHERWISE - loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.tag ) + loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.TAG ) ENDCASE CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' ) @@ -4840,7 +4868,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin ENDWITH && THIS I = I - 1 - toReport.Add( loReg ) + toReport.ADD( loReg ) ENDIF CATCH TO loEx @@ -5193,7 +5221,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base IF VARTYPE(tcIndentation) # 'C' tcIndentation = '' ENDIF - + *-- Quito las líneas en blanco luego del final del ENDPROC X = 0 FOR I = lnFin TO 1 STEP -1 @@ -5205,7 +5233,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDIF X = X + 1 ENDFOR - + IF X > 0 lnFin = lnFin - X DIMENSION laLineas(lnFin) @@ -5526,7 +5554,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' lcMethods = lcMethods + CR_LF ENDFOR - + C_FB2PRG_CODE = C_FB2PRG_CODE + lcMethods ENDIF @@ -6402,7 +6430,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) - THIS.write_Define_Class_COMMENTS( @loRegClass ) + THIS.write_DEFINE_CLASS_COMMENTS( @loRegClass ) THIS.write_METADATA( @loRegClass ) @@ -6556,7 +6584,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass ) - THIS.write_Define_Class_COMMENTS( @loRegClass ) + THIS.write_DEFINE_CLASS_COMMENTS( @loRegClass ) THIS.write_METADATA( @loRegClass ) @@ -6971,19 +6999,19 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0 *-- Header - LOCATE FOR objType = 1 + LOCATE FOR ObjType = 1 IF FOUND() SCATTER MEMO NAME loRegCab ENDIF *-- Dataenvironment - LOCATE FOR objType = 25 + LOCATE FOR ObjType = 25 IF FOUND() SCATTER MEMO NAME loRegDataEnv ENDIF *-- Cursor1 (¿puede haber más de 1 cursor?) - LOCATE FOR objType = 26 + LOCATE FOR ObjType = 26 IF FOUND() SCATTER MEMO NAME loRegCur ENDIF @@ -6991,13 +7019,13 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg IF THIS.l_ReportSort_Enabled *-- ORDENADO SELECT * FROM TABLABIN_0 ; - WHERE objType NOT IN (1,25,26) ; + WHERE ObjType NOT IN (1,25,26) ; ORDER BY vpos,hpos ; INTO CURSOR TABLABIN READWRITE ELSE *-- SIN ORDENAR (Sólo para poder comparar con el original) SELECT * FROM TABLABIN_0 ; - WHERE objType NOT IN (1,25,26) ; + WHERE ObjType NOT IN (1,25,26) ; INTO CURSOR TABLABIN ENDIF @@ -7048,6 +7076,71 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg + #IF .F. + LOCAL THIS AS c_conversor_dbf_a_prg OF 'FOXBIN2PRG.PRG' + #ENDIF + *_MEMBERDATA = [] ; + + [] ; + + [] + + + ******************************************************************************************************************* + PROCEDURE Convertir + LPARAMETERS toModulo, toEx AS EXCEPTION + DODEFAULT( @toModulo, @toEx ) + + TRY + LOCAL lnCodError, loRegCab, loRegDataEnv, loRegCur, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ; + , laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1) + STORE 0 TO lnCodError, lnLastClass + STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1) + STORE NULL TO loRegObj, loRegCab, loRegDataEnv, loRegCur + + USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0 + + *-- Header + THIS.write_DBF_HEADER() + + *-- Fields + THIS.write_DBF_FIELDS( @loRegObj ) + + *-- Indexes + THIS.write_DBF_INDEXES( @loRegCur ) + + + loRegObj = NULL + USE IN (SELECT("TABLABIN_0")) + + *-- Genero el DB2 + IF THIS.l_Test + toModulo = C_FB2PRG_CODE + ELSE + IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 + ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' + ENDIF + ENDIF + + + CATCH TO toEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + USE IN (SELECT("TABLABIN_0")) + + ENDTRY + + RETURN + ENDPROC +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS CL_BASE AS CUSTOM *-- Propiedades. CLASS,