count_lines_over_2gb("C:\big.csv") > > >FUNCTION count_lines_over_2gb >LPARAMETERS tcFilename >LOCAL lnHandle, lnLines, lcData, lnSize, lnLast > > * Validate parameter > IF TYPE("tcFilename") != "C" OR NOT FILE(tcFilename) > MESSAGEBOX("Usage: lines filename.ext", 0 + 64, "Count Lines") > CANCEL > ENDIF > > DECLARE INTEGER _sopen IN msvcr71.dll STRING cFilename, INTEGER nMode, INTEGER nSharing, INTEGER nPermission > DECLARE INTEGER _read IN msvcr71.dll INTEGER nHandle, STRING@ outData, INTEGER outDataLength > DECLARE INTEGER _close IN msvcr71.dll INTEGER nHandle > > * Open the file (binary, do not deny shared access) > lnHandle = _sopen(tcFilename, 0x8000, 0x40, 0) > IF lnHandle <= 0 > MESSAGEBOX("Error opening " + tcFilename, 0 + 64, "Count Lines") > CANCEL > ENDIF > > * Count the lines > lnSize = 0 > lnLast = 0 > lnLines = 0 > DO WHILE .T. > IF INT(lnSize / 10000000) != lnLast > WAIT WINDOW TRANSFORM(INT(lnSize / 1024000)) + " MB" NOWAIT > lnLast = INT(lnSize / 10000000) > ENDIF > lcData = SPACE(16384000) > lnLength = _read(lnHandle, @lcData, LEN(lcData)) > IF lnLength = 0 > EXIT > ENDIF > lnLines = lnLines + OCCURS(CHR(13), lcData) > lnSize = lnSize + lnLength > ENDDO > _close(lnHandle) > > * Report > MESSAGEBOX("File contains " + LTRIM(TRANSFORM(lnLines, "999,999,999")) + " lines." + CHR(13) + "File is " + LTRIM(TRANSFORM(lnSize, "99,999,999,999,999")) + " bytes", 0 + 64, "Count Lines") >How long did it take for 16 GB file?