Algunas funciones nuevas para tratamiento de tablas a bajo nivel

This commit is contained in:
fdbozzo
2015-06-09 20:38:45 +02:00
parent 63f0f339b1
commit 80238b8fdb

View File

@@ -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