diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 2d21c1f..4667e95 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -148,18 +148,37 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE C_DBF_HEAD_F '/>' #DEFINE C_LEN_DBF_HEAD_I LEN(C_DBF_HEAD_I) #DEFINE C_LEN_DBF_HEAD_F LEN(C_DBF_HEAD_F) -#DEFINE C_FIELD_I '' -#DEFINE C_LEN_FIELD_I LEN(C_FIELD_I) -#DEFINE C_LEN_FIELD_F LEN(C_FIELD_F) -#DEFINE C_INDEX_I '' -#DEFINE C_CDX_I '' -#DEFINE C_CDX_F '' +#DEFINE C_CDX_I '' +#DEFINE C_CDX_F '' #DEFINE C_LEN_CDX_I LEN(C_CDX_I) #DEFINE C_LEN_CDX_F LEN(C_CDX_F) #DEFINE C_LEN_INDEX_I LEN(C_INDEX_I) #DEFINE C_LEN_INDEX_F LEN(C_INDEX_F) +#DEFINE C_TABLE_I '' +#DEFINE C_TABLE_F '
' +#DEFINE C_TABLES_I '' +#DEFINE C_TABLES_F '' +#DEFINE C_VIEW_I '' +#DEFINE C_VIEW_F '' +#DEFINE C_VIEWS_I '' +#DEFINE C_VIEWS_F '' +#DEFINE C_FIELD_I '' +#DEFINE C_FIELD_F '' +#DEFINE C_FIELDS_I '' +#DEFINE C_FIELDS_F '' +#DEFINE C_CONNECTION_I '' +#DEFINE C_CONNECTION_F '' +#DEFINE C_CONNECTIONS_I '' +#DEFINE C_CONNECTIONS_F '' +#DEFINE C_RELATION_I '' +#DEFINE C_RELATION_F '' +#DEFINE C_RELATIONS_I '' +#DEFINE C_RELATIONS_F '' +#DEFINE C_INDEX_I '' +#DEFINE C_INDEX_F '' +#DEFINE C_INDEXES_I '' +#DEFINE C_INDEXES_F '' +*-- #DEFINE C_TAB CHR(9) #DEFINE C_CR CHR(13) #DEFINE C_LF CHR(10) @@ -343,30 +362,30 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] c_CurDir = '' @@ -492,11 +511,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM 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' ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) CASE JUSTEXT(THIS.c_InputFile) = THIS.c_DC2 THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'DBC' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dfc' ) + THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) OTHERWISE ERROR 'El archivo [' + THIS.c_InputFile + '] no está soportado' @@ -641,41 +660,41 @@ DEFINE CLASS c_conversor_base AS SESSION LOCAL THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -1643,43 +1662,43 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base LOCAL THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -3412,7 +3431,7 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_vcx OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -3676,7 +3695,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_scx OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -3945,22 +3964,22 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_pjx OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] ******************************************************************************************************************* PROCEDURE Convertir - LPARAMETERS toModulo, toEx AS EXCEPTION - DODEFAULT( @toModulo, @toEx ) + LPARAMETERS toProject, toEx AS EXCEPTION + DODEFAULT( @toProject, @toEx ) #IF .F. LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' @@ -4659,22 +4678,25 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_frx OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] ******************************************************************************************************************* PROCEDURE Convertir - LPARAMETERS toModulo, toEx AS EXCEPTION - DODEFAULT( @toModulo, @toEx ) + LPARAMETERS toReport, toEx AS EXCEPTION + DODEFAULT( @toReport, @toEx ) + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF TRY LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ; - , laBloquesExclusion(1,2), lnBloquesExclusion, I ; - , loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + , laBloquesExclusion(1,2), lnBloquesExclusion, I STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version STORE '' TO lcLine, lcSourceFile STORE NULL TO loReg, toModulo @@ -4688,9 +4710,9 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin THIS.createReport() *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte - THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport ) + THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toReport ) - THIS.escribirArchivoBin( @loReport ) + THIS.escribirArchivoBin( @toReport ) CATCH TO loEx @@ -5046,21 +5068,24 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_dbf OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + [] ******************************************************************************************************************* PROCEDURE Convertir - LPARAMETERS toModulo, toEx AS EXCEPTION - DODEFAULT( @toModulo, @toEx ) + LPARAMETERS toTable, toEx AS EXCEPTION + DODEFAULT( @toTable, @toEx ) + + #IF .F. + LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' + #ENDIF TRY LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ; - , laBloquesExclusion(1,2), lnBloquesExclusion, I ; - , loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + , laBloquesExclusion(1,2), lnBloquesExclusion, I STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version STORE '' TO lcLine, lcSourceFile STORE NULL TO loReg, toModulo @@ -5074,9 +5099,9 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin *THIS.createTable() *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte - THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport ) + THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toTable ) - THIS.escribirArchivoBin( @loReport ) + THIS.escribirArchivoBin( @toTable ) CATCH TO loEx @@ -5096,62 +5121,68 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE escribirArchivoBin - LPARAMETERS toReport + LPARAMETERS toTable *-- ----------------------------------------------------------------------------------------------------------- #IF .F. - LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' #ENDIF TRY - LOCAL loReg, I, lcFieldType, lnFieldLen, lnFieldDec, lnNumCampo, laFieldTypes(1,18) ; - , luValor, lnCodError, loEx AS EXCEPTION - SELECT TABLABIN - AFIELDS( laFieldTypes ) + LOCAL I, lnCodError, loEx AS EXCEPTION + LOCAL loField AS CL_DBF_FIELD OF 'FOXBIN2PRG.PRG' + LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL lcCreateTable, lcLongDec, lcFieldDef - *-- Agrego los registros - FOR EACH loReg IN toReport FOXOBJECT + lcCreateTable = 'CREATE TABLE "' + THIS.c_OutputFile + '" FREE CodePage=' + toTable._CodePage + ' (' + lcFieldDef = '' - *-- Ajuste de los tipos de dato - FOR I = 1 TO AMEMBERS(laProps, loReg, 0) - lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 ) + *-- Conformo los campos + FOR EACH loField IN toTable._Fields FOXOBJECT + lcLongDec = '' - IF lnNumCampo = 0 - ERROR 'No se encontró el campo [' + laProps(I) + '] en la estructura del archivo ' + DBF("TABLABIN") + *-- Nombre, Tipo + lcFieldDef = lcFieldDef + ', ' + loField._Name + ' ' + loField._Type + + *-- Longitud + IF INLIST( loField._Type, 'C', 'N', 'F', 'Q', 'V' ) + lcLongDec = lcLongDec + '(' + loField._Width + ENDIF + + *-- Decimales + IF INLIST( loField._Type, 'B', 'N', 'F' ) AND loField._Decimals > '0' + IF EMPTY(lcLongDec) + lcLongDec = lcLongDec + '(' + ELSE + lcLongDec = lcLongDec + ',' ENDIF + lcLongDec = lcLongDec + loField._Decimals + ENDIF + + IF NOT EMPTY(lcLongDec) + lcLongDec = lcLongDec + ')' + ENDIF - lcFieldType = laFieldTypes(lnNumCampo,2) - lnFieldLen = laFieldTypes(lnNumCampo,3) - lnFieldDec = laFieldTypes(lnNumCampo,4) - luValor = EVALUATE('loReg.' + laProps(I)) + lcFieldDef = lcFieldDef + lcLongDec - DO CASE - CASE INLIST(lcFieldType, 'B') && Double - ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldPrec) ) ) + *-- Null + lcFieldDef = lcFieldDef + IIF( loField._Null = '.T.', ' NULL', ' NOT NULL' ) - CASE INLIST(lcFieldType, 'F', 'N', 'Y') && Float, Numeric, Currency - ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldLen, lnFieldDec) ) ) + *-- NoCPTran + IF loField._NoCPTran = '.T.' + lcFieldDef = lcFieldDef + ' NOCPTRAN' + ENDIF - CASE INLIST(lcFieldType, 'W', 'G', 'M', 'Q', 'V', 'C') && Blob, General, Memo, Varbinary, Varchar, Character - ADDPROPERTY( loReg, laProps(I), luValor ) + *-- AutoInc + IF loField._AutoInc_NextVal <> '0' + lcFieldDef = lcFieldDef + ' AUTOINC NEXTVAL ' + loField._AutoInc_NextVal + ' STEP ' + loField._AutoInc_Step + ENDIF - OTHERWISE && Demás tipos - ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldLen) ) ) - - ENDCASE - - ENDFOR - - INSERT INTO TABLABIN FROM NAME loReg - loReg = NULL + loField = NULL ENDFOR - USE IN (SELECT("TABLABIN")) - - IF THIS.c_Type = 'FRX' - COMPILE REPORT (THIS.c_OutputFile) - ELSE - COMPILE LABEL (THIS.c_OutputFile) - ENDIF + lcCreateTable = lcCreateTable + SUBSTR(lcFieldDef,3) + ')' + *STRTOFILE(lcCreateTable,'CreateTable.txt') + &lcCreateTable. CATCH TO loEx @@ -5164,7 +5195,6 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin THROW FINALLY - USE IN (SELECT("TABLABIN")) ENDTRY @@ -5174,32 +5204,29 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin ******************************************************************************************************************* PROCEDURE identificarBloquesDeCodigo - LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport + LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toTable *-------------------------------------------------------------------------------------------------------------- * taCodeLines (!@ IN ) El array con las líneas del código donde buscar * tnCodeLines (!@ IN ) Cantidad de líneas de código * taBloquesExclusion (?@ IN ) Sin uso * tnBloquesExclusion (?@ IN ) Sin uso - * toReport (?@ OUT) Objeto con toda la información del reporte analizado - * - * NOTA: - * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. + * toTable (?@ OUT) Objeto con toda la información de la tabla analizada *-------------------------------------------------------------------------------------------------------------- EXTERNAL ARRAY taCodeLines, taBloquesExclusion #IF .F. - LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' #ENDIF TRY - LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed + LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed, llBloqueTable_Completed STORE 0 TO I THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile)) IF tnCodeLines > 1 - toReport = NULL - toReport = CREATEOBJECT('CL_REPORT') + toTable = NULL + toTable = CREATEOBJECT('CL_DBF_TABLE') WITH THIS FOR I = 1 TO tnCodeLines @@ -5210,10 +5237,11 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin ENDIF DO CASE - CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toTable, @lcLine, @taCodeLines, @I, tnCodeLines ) llFoxBin2Prg_Completed = .T. - CASE .analizarBloque_TABLE( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + CASE NOT llBloqueTable_Completed AND toTable.analizarBloque( @lcLine, @taCodeLines, @I, tnCodeLines ) + llBloqueTable_Completed = .T. ENDCASE ENDFOR @@ -5233,183 +5261,6 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin ENDPROC - ******************************************************************************************************************* - PROCEDURE analizarBloque_TABLE - *------------------------------------------------------ - *-- Analiza el bloque - *------------------------------------------------------ - LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName - - #IF .F. - LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - #ENDIF - - TRY - LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION - - IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I - llBloqueEncontrado = .T. - - IF C_DATA_F $ tcLine - lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F ) - 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 - tcLine = taCodeLines(I) - - IF C_DATA_F $ tcLine && Fin del valor - lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F ) - ADDPROPERTY( toReg, tcPropName, lcValue ) - EXIT - - ELSE && Otra fracción del valor - 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) + ']' - ENDIF - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN llBloqueEncontrado - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE analizarBloque_FIELDS - *------------------------------------------------------ - *-- Analiza el bloque - *------------------------------------------------------ - LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName - - #IF .F. - LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - #ENDIF - - TRY - LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION - - IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I - llBloqueEncontrado = .T. - - IF C_DATA_F $ tcLine - lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F ) - 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 - tcLine = taCodeLines(I) - - IF C_DATA_F $ tcLine && Fin del valor - lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F ) - ADDPROPERTY( toReg, tcPropName, lcValue ) - EXIT - - ELSE && Otra fracción del valor - 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) + ']' - ENDIF - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN llBloqueEncontrado - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE analizarBloque_INDEXES - *------------------------------------------------------ - *-- Analiza el bloque - *------------------------------------------------------ - LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName - - #IF .F. - LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' - #ENDIF - - TRY - LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION - - IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I - llBloqueEncontrado = .T. - - IF C_DATA_F $ tcLine - lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F ) - 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 - tcLine = taCodeLines(I) - - IF C_DATA_F $ tcLine && Fin del valor - lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F ) - ADDPROPERTY( toReg, tcPropName, lcValue ) - EXIT - - ELSE && Otra fracción del valor - 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) + ']' - ENDIF - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN llBloqueEncontrado - ENDPROC - - ENDDEFINE && CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin @@ -5419,13 +5270,13 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin LOCAL THIS AS c_conversor_prg_a_dbc OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -5610,6 +5461,15 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin ENDPROC + ************************************************************************************************ + PROCEDURE add_Table + LPARAMETERS tcName + tcName = RTRIM(tcName) + THIS._Tables.ADD( CREATEOBJECT("CL_TABLE"), tcName ) + RETURN THIS._Tables( tcName ) + ENDPROC + + ******************************************************************************************************************* PROCEDURE analizarBloque_DATABASE *------------------------------------------------------ @@ -5973,43 +5833,43 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base LOCAL THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -7354,7 +7214,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <> - <<>> <<> + <<>> <> <<>> <> <<>> <> <<>> <> @@ -7405,7 +7265,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base <<>> <> <<>> <> <<>> <> - <<>> <> + <<>> <> <<>> <> <<>> <> <<>> <> @@ -8029,7 +7889,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_vcx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - + [] ; + + [] ; + [] ******************************************************************************************************************* @@ -8158,7 +8018,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_scx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -8316,7 +8176,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - * + [] ; + * + [] ; * + [] @@ -8622,7 +8482,7 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_frx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -8732,7 +8592,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_dbf_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -8798,7 +8658,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg LOCAL THIS AS c_conversor_dbc_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF *_MEMBERDATA = [] ; - + [] ; + + [] ; + [] @@ -8852,23 +8712,25 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_BASE AS CUSTOM - *-- Propiedades. CLASS, - HIDDEN BASECLASS, TOP, WIDTH, CLASSLIB, CONTROLS, CLASSLIBRARY, COMMENT ; +DEFINE CLASS CL_CUS_BASE AS CUSTOM + *-- Propiedades. + HIDDEN BASECLASS, CLASS, TOP, WIDTH, CLASSLIB, CONTROLS, CLASSLIBRARY, COMMENT ; , CONTROLCOUNT, HEIGHT, HELPCONTEXTID, LEFT, NAME, OBJECTS, PARENT ; , PARENTCLASS, PICTURE, TAG, WHATSTHISHELPID - *-- Métodos (Se preservan: init, destroy, error) - HIDDEN ADDOBJECT, ADDPROPERTY, NEWOBJECT, READEXPRESSION, READMETHOD, REMOVEOBJECT ; + *-- Métodos (Se preservan: INIT, DESTROY, ERROR, ADDPROPERTY) + HIDDEN ADDOBJECT, NEWOBJECT, READEXPRESSION, READMETHOD, REMOVEOBJECT ; , RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD _MEMBERDATA = [] ; - + [] ; + + [] ; + + [] ; + [] l_Debug = .F. + ******************************************************************************************************************* PROCEDURE INIT SET DELETED ON SET DATE YMD @@ -8881,28 +8743,82 @@ DEFINE CLASS CL_BASE AS CUSTOM ENDPROC + ******************************************************************************************************************* + PROCEDURE set_Line + LPARAMETERS tcLine, taCodeLines, I + tcLine = LTRIM( taCodeLines(I), 0, ' ', CHR(9) ) + ENDPROC + + ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_MODULO AS CL_BASE +DEFINE CLASS CL_COL_BASE AS COLLECTION + #IF .F. + LOCAL THIS AS CL_COL_BASE OF 'FOXBIN2PRG.PRG' + #ENDIF + + *-- Propiedades (Se preservan: COUNT, KEYSORT, NAME) + **HIDDEN BASECLASS, CLASS, CLASSLIBRARY, COUNT, COMMENT ; + , PARENT, PARENTCLASS, TAG + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] + + l_Debug = .F. + + + ************************************************************************************************ + PROCEDURE INIT + SET DELETED ON + SET DATE YMD + SET HOURS TO 24 + SET CENTURY ON + SET SAFETY OFF + SET TABLEPROMPT OFF + + THIS.l_Debug = (_VFP.STARTMODE=0) + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE set_Line + LPARAMETERS tcLine, taCodeLines, I + tcLine = LTRIM( taCodeLines(I), 0, ' ', CHR(9) ) + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_MODULO AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_MODULO OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] + DIMENSION _Ole_Objs[1], _Clases[1] _Version = 0 _SourceFile = '' @@ -8955,21 +8871,22 @@ DEFINE CLASS CL_MODULO AS CL_BASE RETURN llExiste ENDPROC + ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_OLE AS CL_BASE +DEFINE CLASS CL_OLE AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_OLE OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] _Nombre = '' @@ -8981,62 +8898,62 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_CLASE AS CL_BASE +DEFINE CLASS CL_CLASE AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_CLASE OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -9130,18 +9047,18 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_PROCEDURE AS CL_BASE +DEFINE CLASS CL_PROCEDURE AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] DIMENSION _ProcLines[1] @@ -9164,31 +9081,31 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_OBJETO AS CL_BASE +DEFINE CLASS CL_OBJETO AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_OBJETO OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] DIMENSION _Props[1,1], _Procedures[1] @@ -9241,109 +9158,73 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_REPORT AS COLLECTION +DEFINE CLASS CL_REPORT AS CL_COL_BASE #IF .F. LOCAL THIS AS CL_REPORT OF 'FOXBIN2PRG.PRG' #ENDIF - *-- Propiedades. CLASS, - HIDDEN BASECLASS, TOP, WIDTH, CLASSLIB, CONTROLS, CLASSLIBRARY, COMMENT ; - , CONTROLCOUNT, HEIGHT, HELPCONTEXTID, LEFT, NAME, OBJECTS, PARENT ; - , PARENTCLASS, PICTURE, TAG, WHATSTHISHELPID - - *-- Métodos (Se preservan: init, destroy, error) - HIDDEN ADDOBJECT, ADDPROPERTY, NEWOBJECT, READEXPRESSION, READMETHOD, REMOVEOBJECT ; - , RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD - _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + [] - *-- Proj.Info - l_Debug = .F. + *-- Report.Info _TimeStamp = 0 _Version = '' _SourceFile = '' - ************************************************************************************************ - PROCEDURE INIT - SET DELETED ON - SET DATE YMD - SET HOURS TO 24 - SET CENTURY ON - SET SAFETY OFF - SET TABLEPROMPT OFF - - THIS.l_Debug = (_VFP.STARTMODE=0) - ENDPROC - - ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_PROJECT AS COLLECTION +DEFINE CLASS CL_PROJECT AS CL_COL_BASE #IF .F. LOCAL THIS AS CL_PROJECT OF 'FOXBIN2PRG.PRG' #ENDIF - *-- Propiedades. CLASS, - HIDDEN BASECLASS, TOP, WIDTH, CLASSLIB, CONTROLS, CLASSLIBRARY, COMMENT ; - , CONTROLCOUNT, HEIGHT, HELPCONTEXTID, LEFT, NAME, OBJECTS, PARENT ; - , PARENTCLASS, PICTURE, TAG, WHATSTHISHELPID - - *-- Métodos (Se preservan: init, destroy, error) - HIDDEN ADDOBJECT, ADDPROPERTY, NEWOBJECT, READEXPRESSION, READMETHOD, REMOVEOBJECT ; - , RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD - _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] @@ -9386,19 +9267,11 @@ DEFINE CLASS CL_PROJECT AS COLLECTION _Revision = '' _LanguageID = '' _AutoIncrement = '' - l_Debug = .F. ************************************************************************************************ PROCEDURE INIT - SET DELETED ON - SET DATE YMD - SET HOURS TO 24 - SET CENTURY ON - SET SAFETY OFF - SET TABLEPROMPT OFF - - THIS.l_Debug = (_VFP.STARTMODE=0) + DODEFAULT() THIS._ServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD') ENDPROC @@ -9574,28 +9447,440 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_BASE +DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Modulo + _Version = 0 + _SourceFile = '' + + *-- Table Info + _CodePage = 0 + _Database = '' + _FileType = '' + _FileType_Descrip = '' + _IndexFile = '' + _MemoFile = '' + + *-- Fields and Indexes + _Fields = NULL + _Indexes = NULL + + + ************************************************************************************************ + PROCEDURE INIT + DODEFAULT() + *-- + THIS._Fields = CREATEOBJECT("CL_DBF_FIELDS") + THIS._Indexes = CREATEOBJECT("CL_DBF_INDEXES") + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' + LOCAL loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_TABLE_I)) == C_TABLE_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_TABLE_F $ tcLine && Fin + EXIT + + CASE C_INDEXES_I $ tcLine + loIndexes = THIS._Fields + loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + CASE C_FIELDS_I $ tcLine + loFields = THIS._Fields + loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + OTHERWISE && Otro valor + *-- Estructura a reconocer: + * ID + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loField AS CL_DBF_FIELD OF 'FOXBIN2PRG.PRG' + LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELDS_I)) == C_FIELDS_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELDS_F $ tcLine && Fin + EXIT + + CASE C_FIELD_I $ tcLine + loField = CREATEOBJECT("CL_DBF_FIELD") + loField.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loField, loField._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Field Info + _Name = '' && 1 + _Type = '' && 2 + _Width = 0 && 3 + _Decimals = 0 && 4 + _Null = .F. && 5 + _NoCPTran = .F. && 6 + _Field_Valid_Exp = '' && 7 - DBC + _Field_Valid_Text = '' && 8 - DBC + _Field_Default_Value = '' && 9 - DBC + _Table_Valid_Exp = '' && 10 - DBC + _Table_Valid_Text = '' && 11 - DBC + _LongTableName = '' && 12 - DBC + _Ins_Trig_Exp = '' && 13 - DBC + _Upd_Trig_Exp = '' && 14 - DBC + _Del_Trig_Exp = '' && 15 - DBC + _TableComment = '' && 16 - DBC + _AutoInc_NextVal = 0 && 17 + _AutoInc_Step = 0 && 18 + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELD_I)) == C_FIELD_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELD_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de FIELD + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_INDEXES_I)) == C_INDEXES_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_INDEXES_F $ tcLine && Fin + EXIT + + CASE C_INDEX_I $ tcLine + loIndex = CREATEOBJECT("CL_DBF_INDEX") + loIndex.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loIndex, loIndex._TagName ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Index Info + _TagName = '' + _Collate = '' + _Key = '' + _Descending = .F. + _For_Exp = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_INDEX_I)) == C_INDEX_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_INDEX_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de INDEX + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] *-- Información interesante sobre Servidores OLE y corrupción de IDs: http://www.west-wind.com/wconnect/weblog/ShowEntry.blog?id=880 @@ -9800,23 +10085,23 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_PROJ_SRV_DATA AS CL_BASE +DEFINE CLASS CL_PROJ_SRV_DATA AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] _HelpContextID = 0 @@ -9906,20 +10191,20 @@ ENDDEFINE ******************************************************************************************************************* -DEFINE CLASS CL_PROJ_FILE AS CL_BASE +DEFINE CLASS CL_PROJ_FILE AS CL_CUS_BASE #IF .F. LOCAL THIS AS CL_PROJ_FILE OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] _Name = ''