daily pastebin goal
11%
SHARE
TWEET

Simple text file reader-viewer line by line for Linux | fpc

a guest Sep 10th, 2015 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Simple text file reader-viewer line by line for Linux | in free pascal |
  2.  
  3. program fr;
  4. // programmer: Aleksandar Josifoski     josifoski@gmail.com
  5. // reading text file line by line
  6. // j for next k for previous g for first G for last line q for quit
  7. {$mode objfpc}{$H+}
  8.  
  9. uses Unix, keyboard, sysutils;
  10.  
  11. var
  12.    f : Text;
  13.    L, i, j : Longint;
  14.    ar: array[1..100000] of String;
  15.    si, sj : String;
  16.    K : TKeyEvent;
  17.    stcomm : String;
  18.  
  19. begin
  20.    InitKeyBoard;
  21.    if  (ParamStr(1)='') or (FileExists(ParamStr(1))=false) then begin
  22.                               writeln('Simple file reader-viewer line by line');
  23.                               writeln('Usage is fr YourFile');
  24.                               writeln('Shortcuts: j next, k previous, g first, G last line, q or ESC quit');
  25.                               DoneKeyBoard;
  26.                               Halt;
  27.                            end;
  28.    stcomm:='tr -s ''\n'' <'+ParamStr(1)+' >frfile';
  29.    L:= FpSystem(stcomm);
  30.    L:= FpSystem('clear');
  31.    AssignFile(f, 'frfile');
  32.    reset(f);
  33.    j:=0;
  34.    while not(eof(f)) do begin
  35.      j:=j+1;
  36.      readln(f, ar[j]);
  37.    end; // while
  38.    CloseFile(f);
  39.    if j=0 then begin
  40.                  writeln('empty file, exit');
  41.                  DoneKeyBoard;
  42.                  Halt;
  43.                end;
  44.    i:=1;
  45.    str(j, sj);
  46.    str(i, si);
  47.    writeln(si+'/'+sj);
  48.    writeln();
  49.    writeln();
  50.    write(ar[i]);
  51.    repeat
  52.     K:=GetKeyEvent;
  53.     K:=TranslateKeyEvent(K);
  54.             case GetKeyEventChar(K) of
  55.              'j' : if i < j then begin
  56.                       L:= FpSystem('clear');
  57.                       i:=i+1;
  58.                       str(i, si);
  59.                       writeln(si+'/'+sj);
  60.                       writeln();
  61.                       writeln();
  62.                       write(ar[i]);
  63.                     end;
  64.              'k' : if i > 1 then begin
  65.                       L:= FpSystem('clear');
  66.                       i:=i-1;
  67.                       str(i, si);
  68.                       writeln(si+'/'+sj);
  69.                       writeln();
  70.                       writeln();
  71.                       write(ar[i]);                    
  72.                     end;
  73.              'g' :  begin
  74.                       L:= FpSystem('clear');
  75.                       i:=1;
  76.                       str(i, si);
  77.                       writeln(si+'/'+sj);
  78.                       writeln();
  79.                       writeln();
  80.                       write(ar[i]);                    
  81.                     end;
  82.              'G' :  begin
  83.                       L:= FpSystem('clear');
  84.                       i:=j;
  85.                       str(i, si);
  86.                       writeln(si+'/'+sj);
  87.                       writeln();
  88.                       writeln();
  89.                       write(ar[i]);                    
  90.                     end;
  91.              'q' : L:= FpSystem('clear');
  92.              #27 : L:= FpSystem('clear');        
  93.             end;
  94.    until (GetKeyEventChar(K)='q') or (GetKeyEventChar(K)=#27);
  95.    DoneKeyBoard;
  96. end.
RAW Paste Data
Top