Clear All Use myTable Scan =savebmps(Alias(), "genfieldName", Recno(), "mybmps\"+Ltrim(Str(Recno()))) Endscan Function savebmps Lparameters tcTable, tcField, tnRecNo, tcOutFileName * tcTable - Tablename containing BMP gen field * tcField - Gen field name * tnRecNo - recno no extract * tcOutFileName - path and fielname of output filename except .BMP extension (no check) Local handle, handleout, lcTable lcTable = "T"+Sys(2015) Select &tcField From (tcTable) ; where Recno() = tnRecNo ; into Table (lcTable) Use handle=Fopen(lcTable+".fpt") handleout=Fcreate(tcOutFileName) lnSize = Fseek(handle, 0, 2) && Seek to eof and get size =Fseek(handle,599) && Go to start of gen file If ( lnSize - 599 ) % 2 = 0 && Might it be a duplicate ? Let's check lcFirst = Fread(handle, (lnSize - 599)/2) && Read first part to lcFirst lcSecond = Fread(handle, lnSize) && Read rest to lcSecond && lnSize is totlen && but fread() would stop at feof() =Fwrite(handleout, lcFirst, lnSize) && Again lnSize is bigger but && correct size would be written If lcFirst # lcSecond && It was not a duplicate, so write lcSecond too =Fwrite(handleout, lcSecond, lnSize) Endif Else =Fwrite(handleout, ; fread(handle,lnSize), ; lnSize) && Since now we have a size at hand. && So let's do readwrite in one pass Endif =Fclose(handle) =Fclose(handleout) Erase (lcTable+".*")Cetin