[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]