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

{
>I'm wondering if anyone can post me a source For another way to
>find out the max lines in a Text File.
}

 {.$DEFinE DebugMode}

 {$ifDEF DebugMode}

   {$A+,B-,D+,E-,F-,G+,I+,L+,N-,O-,P-,Q+,R+,S+,T+,V+,X-}

 {$else}

   {$A+,B-,D-,E-,F-,G+,I-,L-,N-,O-,P-,Q-,R-,S-,T-,V-,X-}

 {$endif}

 {$M 1024,0,0}

Program LineCounter;

Const
  co_LineFeed = 10;

Type
  byar_60K = Array[1..61440] of Byte;

Var
  wo_Index,
  wo_BytesRead : Word;

  lo_FileSize,
  lo_BytesProc,
  lo_LineCount : LongInt;

  fi_Temp      : File;

  byar_Buffer  : byar_60K;

begin
              (* Attempt to open TEST.doC File.                       *)
  assign(fi_Temp, 'linecnt.pas');
  {$I-}
  reset(fi_Temp, 1);
  {$I+}

              (* Check if attempt was sucessful.                      *)
  if (ioresult <> 0) then
    begin
      Writeln('ERRor opening TEST.doC File');
      halt
    end;

              (* Record the size in Bytes of TEST.doC .               *)
  lo_FileSize := Filesize(fi_Temp);

              (* Initialize Variables.                                *)
  lo_LineCount := 0;
  lo_BytesProc := 0;

              (* Repeat Until entire File has been processed.         *)
  Repeat
              (* Read in all or a 60K chunk of TEST.doC into the      *)
              (* "buffer" For processing.                             *)
    blockread(fi_Temp, byar_Buffer, sizeof(byar_60K), wo_BytesRead);

              (* Count the number of line-feed Characters in the      *)
              (* "buffer".                                            *)
    For wo_Index := 1 to wo_BytesRead do
      if (byar_Buffer[wo_Index] = co_LineFeed) then
        inc(lo_LineCount);

              (* Record the number of line-feeds found in the buffer. *)
    inc(lo_BytesProc, wo_BytesRead)

  Until (lo_BytesProc = lo_FileSize);

              (* Close the TEST.doC File.                             *)
  close(fi_Temp);

              (* Display the results.                                 *)
  Writeln(' total number of lines in LinECNT.PAS = ', lo_LineCount)

end.
{
  ...to find a specific line, you'll have to process the Text File up
  to the line you are after, then use a "seek" so that you can read
  in just this line into a String Variable. (You'll have to determine
  the length of the String, and then set the String's length-Byte.)
}

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