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

{
ERIC MILLER
read a Text File and scroll
}

Uses
  Crt;

Const
  MaxLine   = 200;
  MaxLength = 80;

Var
  Lines       : Array [1..MaxLine] of String[MaxLength];
  OldLine,
  L,
  CurrentLine,
  NumLines    : Word;
  TextFile    : Text;
  Key         : Char;
  Redraw,
  Done        : Boolean;

begin
  ClrScr;
  Assign(TextFile, 'MCGALIB.PAS');
  Reset(TextFile);
  NumLines := 0;
  While not EOF(TextFile) and (NumLines < MaxLine) DO
  begin
    Inc(NumLines);
    Readln(TextFile, Lines[NumLines]);
  end;
  Close(TextFile);

{
 Well...that handles getting the File into memory...but
 to scroll through using Up/Down & PgUp PgDn is a lot harder,
 but not incredibly difficult.
}
  Done := False;
  Redraw := True;
  CurrentLine := 1;

  While not Done DO
  begin
    if Redraw then
    begin
      GotoXY(1,1);
      For L := CurrentLine to CurrentLine + 22 DO
          Write(Lines[L], ' ':(80-Length(Lines[L])));
      Redraw := False;
    end;
    Key := ReadKey;
    Case Key of
      #0:
        begin { cursor/page keys }
          OldLine := CurrentLine;
          Key := ReadKey;

          Case Key of
            #72: { up  }
              if CurrentLine > 1 then
                Dec(CurrentLine);
            #80: { down  }
              if CurrentLine < (NumLines-22) then
                Inc(CurrentLine);
            #73: { page up  }
              if CurrentLine > 23 then
                Dec(CurrentLine, 23)
              else
                CurrentLine := 1;
            #81: { page down }
               if CurrentLine < (NumLines-44) then
                 Inc(CurrentLine, 23)
               else
                 CurrentLine := NumLines-22;
          end;

          if CurrentLine <> OldLine then
            Redraw := True;
        end;

      #27: Done := True;

    end; {Case}
  end; {begin}
end. {Program}

{
That should work For scrolling through the lines. Sorry
'bout not commenting the code alot; it is almost self-explanatory
though.  But it works!  You could optimize it For larger Files
by using an Array of Pointers to Strings.  But enough For now.
}

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