[Back to FILES SWAG index]  [Back to Main SWAG index]  [Original]

{
>The subroutine opened a text file (in this case the Telix.USE file) in
>binary mode, and then searched through the file for the CR/LF pair and
>then incremented a counter.  At the end I knew the number of lines in
>the text file.  I suppose in Pascal I could open the file do a while
>loop and count the lines -- but that would require me to read every
>single line where the basic subroutine did all the searching without
>having to read the file line by line.

>I guess what I'm asking is how is a fast way to determine the number of
>lines in a text file using Pascal.

FWIW, This routine takes a little over 6 seconds on a 330K TELIX.USE on a
386/33
}

program countlines;

var
   usefile : file;
   buffer :  array[0..8191] of byte;
   counter, numw, numr : word;
   size, numlines : longint;


begin
   numlines := 0;
   counter := 0;
   fillchar(buffer, sizeof(buffer), #0);
   assign(usefile,'TELIX.USE');
   reset(usefile,1);
   size := filesize(usefile);
   repeat
      blockread(usefile,buffer,sizeof(buffer),numr);
      for counter := 0 to 8191 do
         if buffer[counter] = ord(13)
            then begin
                    inc(numlines);
                    write(round((filepos(usefile)/size)*100),'%',chr(13));
                 end;
   until numr = 0;
   close(usefile);
   writeln('Your TELIX.USE has ',numlines,' lines.');
end.

[Back to FILES SWAG index]  [Back to Main SWAG index]  [Original]