Advertisement
Guest User

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

a guest
Sep 10th, 2015
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement