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