Algunas funciones nuevas para tratamiento de tablas a bajo nivel
This commit is contained in:
@@ -25055,6 +25055,11 @@ DEFINE CLASS CL_DBF_UTILS AS Session
|
|||||||
+ [<memberdata name="filetypedescription" display="fileTypeDescription"/>] ;
|
+ [<memberdata name="filetypedescription" display="fileTypeDescription"/>] ;
|
||||||
+ [<memberdata name="getcodepageinfo" display="getCodePageInfo"/>] ;
|
+ [<memberdata name="getcodepageinfo" display="getCodePageInfo"/>] ;
|
||||||
+ [<memberdata name="getdbfmetadata" display="getDBFmetadata"/>] ;
|
+ [<memberdata name="getdbfmetadata" display="getDBFmetadata"/>] ;
|
||||||
|
+ [<memberdata name="get_bintableflags" display="get_BinTableFlags"/>] ;
|
||||||
|
+ [<memberdata name="get_numtableflags" display="get_NumTableFlags"/>] ;
|
||||||
|
+ [<memberdata name="get_structure" display="get_Structure"/>] ;
|
||||||
|
+ [<memberdata name="set_bintableflags" display="set_BinTableFlags"/>] ;
|
||||||
|
+ [<memberdata name="set_numtableflags" display="set_NumTableFlags"/>] ;
|
||||||
+ [<memberdata name="totext" display="toText"/>] ;
|
+ [<memberdata name="totext" display="toText"/>] ;
|
||||||
+ [<memberdata name="write_dbc_backlink" display="write_DBC_BackLink"/>] ;
|
+ [<memberdata name="write_dbc_backlink" display="write_DBC_BackLink"/>] ;
|
||||||
+ [</VFPData>]
|
+ [</VFPData>]
|
||||||
@@ -25472,7 +25477,9 @@ DEFINE CLASS CL_DBF_UTILS AS Session
|
|||||||
TRY
|
TRY
|
||||||
LOCAL lnHandle, ln_HexFileType, lcStr, lnDataPos, lnFieldCount, loEx AS EXCEPTION
|
LOCAL lnHandle, ln_HexFileType, lcStr, lnDataPos, lnFieldCount, loEx AS EXCEPTION
|
||||||
|
|
||||||
IF NOT EMPTY(tcDBC_Name)
|
tcDBC_Name = EVL(tcDBC_Name,'')
|
||||||
|
|
||||||
|
*IF NOT EMPTY(tcDBC_Name)
|
||||||
ln_HexFileType = 0
|
ln_HexFileType = 0
|
||||||
lnHandle = FOPEN(tc_FileName,2)
|
lnHandle = FOPEN(tc_FileName,2)
|
||||||
|
|
||||||
@@ -25514,7 +25521,7 @@ DEFINE CLASS CL_DBF_UTILS AS Session
|
|||||||
ERROR C_BACKLINK_CANT_UPDATE_BL_LOC + ' [' + tcDBC_Name + '] ' + C_BACKLINK_OF_TABLE_LOC + ' [' + tc_FileName + ']'
|
ERROR C_BACKLINK_CANT_UPDATE_BL_LOC + ' [' + tcDBC_Name + '] ' + C_BACKLINK_OF_TABLE_LOC + ' [' + tc_FileName + ']'
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
*ENDIF
|
||||||
|
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
@@ -25532,6 +25539,74 @@ DEFINE CLASS CL_DBF_UTILS AS Session
|
|||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION get_Structure
|
||||||
|
LPARAMETERS taFields, tc_FileName
|
||||||
|
|
||||||
|
WITH THIS AS CL_DBF_UTILS OF 'lib_indices.prg'
|
||||||
|
LOCAL lnFieldCount
|
||||||
|
lnFieldCount = 0
|
||||||
|
|
||||||
|
IF NOT EMPTY(tc_FileName)
|
||||||
|
.getDBFmetadata(tc_FileName)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
lnFieldCount = .n_FieldCount
|
||||||
|
DIMENSION taFields(lnFieldCount,4)
|
||||||
|
|
||||||
|
FOR I = 1 TO lnFieldCount
|
||||||
|
WITH .Fields.Item(I)
|
||||||
|
taFields(I,1) = .FieldName
|
||||||
|
taFields(I,2) = .FieldType
|
||||||
|
taFields(I,3) = .FieldWidth
|
||||||
|
taFields(I,4) = .FieldDecimals
|
||||||
|
ENDWITH
|
||||||
|
ENDFOR
|
||||||
|
ENDWITH
|
||||||
|
|
||||||
|
RETURN lnFieldCount
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE get_BinTableFlags
|
||||||
|
*-- Leo los flags de la tabla indicada
|
||||||
|
LPARAMETERS tcFile
|
||||||
|
|
||||||
|
LOCAL lnHandle, lcTableFlags
|
||||||
|
lnHandle = FOPEN(tcFile,0)
|
||||||
|
FSEEK(lnHandle,28)
|
||||||
|
lcTableFlags = FREAD(lnHandle,1)
|
||||||
|
FCLOSE(lnHandle)
|
||||||
|
RETURN lcTableFlags
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE get_NumTableFlags
|
||||||
|
*-- Leo los flags de la tabla indicada
|
||||||
|
LPARAMETERS tcFile
|
||||||
|
RETURN ASC( THIS.get_BinTableFlags(tcFile) )
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE set_BinTableFlags
|
||||||
|
*-- Seteo los flags en la tabla indicada
|
||||||
|
LPARAMETERS tcFile, tcBinTableFlags
|
||||||
|
|
||||||
|
LOCAL lnHandle, lnWritten
|
||||||
|
lnHandle = FOPEN(tcFile,1)
|
||||||
|
FSEEK(lnHandle,28)
|
||||||
|
lnWritten = FWRITE(lnHandle, tcTableFlags, 1)
|
||||||
|
FCLOSE(lnHandle)
|
||||||
|
RETURN lnWritten
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE set_NumTableFlags
|
||||||
|
*-- Seteo los flags en la tabla indicada
|
||||||
|
LPARAMETERS tcFile, tnNumTableFlags
|
||||||
|
RETURN THIS.set_BinTableFlags( tcFile, CHR(tnNumTableFlags) )
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
ENDDEFINE
|
ENDDEFINE
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user