*NAME: .Filefix() *CALLED BY: .oFileDict.CheckOrRepair() and other places. *FUNCTION: To check for file corruption and repair. *DATE: 06/12/2001. * LPARAMETERS tnRepair, tlShowMessage * LOCAL llRetVal, ; lnFixRetVal, ; lnCheckRetVal * llRetVal = .T. * *-- Load library if not loaded already. IF !"FFIX4_50.FLL" $ UPPER(SET("LIBRARY")) SET LIBRARY TO FFix4_50.FLL ADDITIVE ENDIF * WITH THIS *-- First we always check. lnCheckRetVal = FIXDBF(.TablePath + .TableName + ".DBF", 0) * DO CASE CASE lnCheckRetVal = 0 *-- No problem with the file, no message. CASE lnCheckRetVal < 0 IF tlShowMessage = .T. *-- File could not even be opened. .oUtils.DoMessage(.TableName + ; CHR(13) + TRANSFORM(lnCheckRetVal) + " " + L("File could not be checked."), ; "*OK*", "X") ENDIF * llRetVal = .F. CASE lnCheckRetVal > 0 AND tnRepair = 0 IF tlShowMessage = .T. *-- Corrupted, and just checking. .oUtils.DoMessage(.TableName + ; CHR(13) + L("Corrupted file, corruption code: #") + ALLTR(STR(lnCheckRetVal)), ; "*OK*", "X") ENDIF CASE lnCheckRetVal > 0 AND tnRepair = 1 *-- Corrupted, and to be repaired. lnFixRetVal = FIXDBF(.TablePath + .TableName + ".DBF", 1) * IF lnFixRetVal = 0 IF tlShowMessage = .T. *-- So it has been repaired. .oUtils.DoMessage(.TableName + ; CHR(13) + L("Corrupted file, corruption code: #") + ALLTR(STR(lnCheckRetVal)) + ; CHR(13) + L("File has been repaired."), ; "*OK*", "!") ENDIF ELSE IF tlShowMessage = .T. *-- So it has not been repaired. .oUtils.DoMessage(.TableName + ; CHR(13) + TRANSFORM(lnFixRetVal) + " " + L("File could not be repaired, code: #") + ALLTR(STR(lnFixRetVal)), ; "*OK*", "X") *-- Failed. llRetVal = .F. ENDIF ENDIF ENDCASE ENDWITH * RETURN llRetVal>Hi friends: