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_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 + '>', '' + 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 + '>', '' + 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 + '>', '' + 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 = ''