Menu Pascal程序不显示完整输出
我的学校作业是用pascal创建一个类似菜单的程序,显示其他程序的代码。它逐行读取文件中的文本并将其打印到控制台。当它没有显示完整的输出时,它工作得很好。这是它显示的输出: 当它运行时,它会逐行显示所有内容,但在最后,您只能看到控制台窗口中的代码部分,无法向上滚动。谁能告诉我怎么解决这个问题吗?这将是非常受欢迎的。 以下是实际代码:Menu Pascal程序不显示完整输出,menu,scroll,console,output,pascal,Menu,Scroll,Console,Output,Pascal,我的学校作业是用pascal创建一个类似菜单的程序,显示其他程序的代码。它逐行读取文件中的文本并将其打印到控制台。当它没有显示完整的输出时,它工作得很好。这是它显示的输出: 当它运行时,它会逐行显示所有内容,但在最后,您只能看到控制台窗口中的代码部分,无法向上滚动。谁能告诉我怎么解决这个问题吗?这将是非常受欢迎的。 以下是实际代码: program pascalMenu //ime na programata {$mode objfpc};//OOP pascal ili nesht
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.
program pascalMenu//ime na ProgramData
{$modeobjfpc}//OOP pascal ili neshto takova(zaduljitelno e)
使用sysutils,
阴极射线管,图形;
变量选择:字符串的数组[1..5]//马西夫,v斯鲁查克·萨杜尔加·查斯和伊梅纳塔·法洛维特
程序文件:文本//我不知道该怎么办
userFile,line,number,filename:string;
i、 j,值:整数;
c:半焦;
开始
writeln('此程序将打开我们以前的所有任务');
//马西瓦普勒内酒店
对于i:=1到5 do
开始
str(i,编号);
选项[i]:=“程序”+编号;
终止
j:=1;
重复
writeln('使用箭头键导航,ENTER键打开,ESC键关闭');
//pokazvane na elementite v masiva雪橇vsqka vrutka na cikula
对于i:=1到5 do
开始
如果i=j,那么
开始
//tva e za cveta
文本颜色(红色);
书面(选择[i]);
文本颜色(白色);
持续
终止
书面(选择[i]);
终止
//搜索菜单循环
c:=readkey//切特内纳科普切罗夫酒店
clrsc;//-chisti konzolata(可选)
如果ord(c)=0,则
c:=readkey;
值:=ord(c);
//选择权
案例价值
72 :
开始
j:=j-1;
如果j<1,则j:=5;
终止
80:
开始
j:=j+1;
如果j>5,则j:=1;
终止
13:
开始
str(j,数字);
文件名:='程序'+number+'.txt';
赋值文件(程序文件,文件名)//我不知道该怎么做
//tva nz za kakvo e,obache sled 5-q opit reshi,che bez nemoje
尝试
重置(程序文件)//奥特瓦克·法利亚·扎切特内酒店
重复
readln(程序文件,行)//切特1号红色ot故障v线
写(行);
直到(Eof(程序文件))//eof-文件结束
关闭文件(程序文件)//扎杜尔吉特尔诺!!这是第二次世界大战
//zaradi greshka v读/写dostupa
除了在E:ei上,恐怖开始了
writeln('程序无法读取文件。请检查文件名和目录');终止
终止
writeln('按任意键返回主菜单');
writeln('P.S.-这将删除文本');
readln;
clrsc;
终止
终止
直到值=27;
终止
使用单位Crt禁止滚动。不用它
或者看看FPC附带的“lister”演示,它尝试了一些相同的功能(光标移动以进行选择和显示)