文件的折页打印程序
program fold;
{$u+}
var filename:string[12];
name:text;
charstr:array[-10..523]ofstring[120];
fyf,ch:char;pzx:string[10];
zj,hj:string[2];
pyk:string[3];
yk,phs,i,hs,ro,zks,hk:integer;
zx:'A'..'Z';
begin
inline($b0/$10/$b4/$00/$cd/$10);{CGA则应为inline($b4/$00/$b0/$42/$cd/$10)}
write('':28,'请输入文件名:');readln(filename);assign(name,filename),
{$i-}
reset(name);
{$i+}
write('':28,'字型:');readln(zx);
write('':28,'字距:');readln(zj);
write('':28,'行距:');readln(hj);
write('':28,'行宽:');readln(hk);
write('':28,'中间空格数:');readln(zks);
write('':28,'每页打印多少行:');readln(ro);
write('':28,'消除分页符(y/n):');readln(fyf);
hs:=-10;
{$R+}
while not eof(name) do
begin
read(name,charstr[hs]);
if(length(charstr[hs])>=2)then
begin
if ord(copy(charstr[hs],1,1))=$8athen delete(charstr[hs],1,1);
end;
readln(name);
hs:=hs+1;
end;
phs:=-10;
pzx:=chr(96)+zx+chr(38)+hj+chr(94)+zj+chr(96);
writeln(lst,pzx);
repeat
if upcase(fyf)='N' then
begin
write('':28,'请输入打印页号:');readln(yk);
end;
i:=0;
textmode(80);textcolor(yellow);
textbackground(red);clrscr;
gotoxy(30,12);write('Now printing.....!
');
while(i<ro)do
begin
if phs<hs then write(lst,charstr[phs]);
write(lst,'':(hk-length(charstr[phs])),'':zks);
if phs+ro<hs then
writeln(lst,charstr[phs+ro])
else writeln(lst,'');
i:=i+1;phs:=phs+1;
end;
textbackground(black);clrscr;
gotoxy(1,1);
inline($b0/$10/$b4/$00/$cd/$10);{同上}
phs:=phs+ro;
if upcase(fyf)='N' then
begin
writeln(lst,'');
writeln(lst,'');
str(yk,pyk);write(lst,'':36,'~',pyk,'~');
str(yk+1,pyk);writeln(lst,'':84,'~',pyk,'~');
end;
if phs<hs then
begin
write('按任意键继续打印...!');read(kbd,ch);
gotoxy(1,1);
end;
delline;
until phs>=hs;
close(name);
end.