fastrepair('blahblah.scx') function fastrepair Lparameters tcDBF Local handle, lnFileSize, lnReccount, lnHeaderSize, lnRecordSize, ; lnCalculatedReccount, llHasMemo handle=fopen(tcDBF,12) && Opened readwrite lnFileSize = fseek(handle,0,2) && Get file size * Read header info With this lnReccount = ReadBytes(handle, 4,4) lnHeaderSize = ReadBytes(handle, 8,2) lnRecordSize = ReadBytes(handle,10,2) lnCalculatedReccount = floor((lnFileSize-(lnHeaderSize+1))/lnRecordSize) If lnCalculatedReccount # lnReccount && If calculated # recorded fix it WriteBytes(handle, 4,4,lnCalculatedReccount) Endif Endwith =fclose(handle) function readbytes Lparameters tnHandle, tnPos, tnSize, tlLR Local lcString, lnRetValue,ix =fseek(tnHandle, tnPos,0) && Go to pos lcString = fread(tnHandle, tnSize) && Read tnSize bytes lnRetValue = 0 For ix=0 to tnSize-1 && Convert to a number lnRetValue = lnRetValue + asc(substr(lcString,ix+1)) * ; iif(tlLR,256^(tnSize-1-ix),256^ix) Endfor Return int(lnRetValue) function WriteBytes Lparameters tnHandle, tnPos, tnSize, tnNumber, tlLR Local lcString, lnLowDword, lnHighDword,ix lcString='' If tlLR For ix=tnSize-1 to 0 step -1 lcString=lcString+chr(tnNumber/256^ix%256) Endfor Else For ix=0 to tnSize-1 lcString=lcString+chr(tnNumber/256^ix%256) Endfor Endif =fseek(tnHandle, tnPos,0) && Go to pos Return fwrite(tnHandle,lcString)Cetin