2014-01-13 3 views
0

Моя школьная задача состояла в том, чтобы создать программу, подобную меню, с паскалем, которая показывает код других программ. Он читает текст из файла по строкам и печатает его на консоли. Он отлично работает до такой степени, когда он не показывает полную выходную информацию. Это выход, что он показывает: http://postimg.org/image/3r4ua8poz/Программа Pascal не показывает полный вывод

Когда она работает она показывает все, строка за строкой, но в конце концов вы можете увидеть только часть кода, которая помещается в окне консоли, и вы не можете прокручивать вверх. Может ли кто-нибудь сказать мне, как это исправить? Это будет много. Вот actuall код:

program pascalMenu //ime na programata 
{$mode objfpc};//OOP pascal ili neshto takova(zaduljitelno e) 
uses sysutils, 
crt, graph; 
Var choice : array[1..5] of string;//masiv, v sluchaq sadurja chas ot imenata na failovete 
programFile : Text;//shte sudurja imeto na faila 
userFile,line,number,filename : string; 
i,j,value : integer; 
c : char; 
begin 
     writeln('This program will open all of our previous tasks.'); 

     //pulnene na masiva 
     for i := 1 to 5 do 
     begin 
       str(i,number); 
       choice[i] := 'program' + number; 
     end; 
     j:=1; 

     repeat 
     writeln('Use the arrow keys to navigate, ENTER to open and ESC to close.'); 


     //pokazvane na elementite v masiva sled vsqka vrutka na cikula 
     for i:= 1 to 5 do 
      begin 
       if i = j then 
       begin 
       //tva e za cveta 
       textcolor(red); 
       writeln(choice[i]); 
       textcolor(white); 
       continue; 
       end; 
       writeln(choice[i]); 

      end; 

     //beggining the menu loop 

     c := readkey;//chetene na kopche rofl 
     clrscr;// - chisti konzolata(optional) 
     if ord(c) = 0 then 
     c := readkey; 
     value := ord(c); 
     //options 
     case value of 
     72 : 
       begin 
       j:= j - 1; 
       if j < 1 then j :=5; 
       end; 
     80: 
       begin 
       j:= j + 1; 
       if j > 5 then j:= 1; 
       end; 
     13: 
       begin 
       str(j,number); 
       filename := 'program' + number + '.txt'; 
       assignfile(programFile,filename);//prilaga imeto na faila na promenlivata 
       //tva nz za kakvo e, obache sled 5-q opit reshi, che bez nego nemoje 
       try 
       reset(programFile);//otvarq faila za chetene 

       repeat 

         readln(programFile, line);//chete 1 red ot faila v line 
         writeln(line); 
       until (Eof(programFile));//eof - end of file 
       closefile(programFile);//zaduljitelno!! bez nego ne mogat dase otvarqt 2/poveche faila 
             //zaradi greshka v read/write dostupa 
       except on E:EInOutError do begin 
       writeln('The program could not read the file. Check the file''''s''name and directory.');end; 
       end; 

       writeln('Press any key to return to the main menu.'); 
       writeln('P.S. - This will erase the text'); 
       readln; 
       clrscr; 
       end; 
     end; 
     until value =27; 


end. 

ответ

0

Прокрутка запрещено использование устройства Crt. Удалите его.

Или посмотрите демоверсию «lister», которая поставляется с FPC, которая пытается немного изменить (перемещение курсора для выбора и отображения)

Смежные вопросы