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