program ted2;
uses crt;
var
arxeio : text;
grammi : array [1..700] of string[80];
filename1 : string[12];
page : array [0..10] of integer;
i,j,k,x,y,plithos,d1,d2,inserted_lines : integer;
neo,key,flag,flag1,ikey,pkey : char;
procedure open (flag : char ;filename1 :string);
begin
assign (arxeio,filename1);
if flag='n' then
begin
rewrite(arxeio);
end;
reset(arxeio);
end;
procedure readfile (j : integer);
begin
i:=1;
if flag<>'n'then
begin
while not EOF(arxeio) do
begin
readln(arxeio,grammi[i]);
i:=i+1;
end;
plithos:=i;
for i:=plithos+1 to plithos+20 do
fillchar(grammi[i],sizeof(grammi[i]),' ');
end;
end;
procedure close1 ;
begin
rewrite(arxeio);
for i:=1 to plithos+inserted_lines do
begin
writeln(arxeio,grammi[i]);
end;
close(arxeio);
end;
procedure kelyfos(neo : char) ;
begin
for i:=1 to 32 do
begin
gotoxy(i,1);
if ( i=32) then
begin
write (chr(181));
end
else
write(chr(205));
end;
for i:=47 to 80 do
begin
if (i=47) then
begin
gotoxy(i,1);
write (chr(198));
end
else
begin
gotoxy(i,1);
write(chr(205));
end;
end;
if neo='n' then
begin
gotoxy(33,1);writeln(' ',filename1,' ');
end
else
begin
gotoxy(33,1);writeln(' tEd ');
end;
for i:=1 to 79 do
begin
gotoxy(i,24);
if (i=1) then begin write(chr(192));end;
write(chr(196));
if (i=79) then begin write(chr(217));end;
end;
gotoxy(3,24); write (' ',x,':',y+22*d1,' ');
gotoxy(70,24);write(' page ',d1,' ');
end;
procedure refresh ;
begin
clrscr;
delay(0);
kelyfos(neo);
delay(0);
gotoxy(1,2);
for i:=page[d1]+1 to page[d2] do
begin
writeln(grammi[i]);
end;
end;
procedure refresh1 ;
begin
clrscr;
kelyfos(neo);
gotoxy(1,2);
if (plithos<22) then
begin
for i:=page[d1]+1 to plithos do
begin
writeln(grammi[i]);
end;
end;
gotoxy(1,2);
if (plithos>=22) then
begin
for i:=page[d1]+1 to page[d2] do
begin
writeln(grammi[i]);
end;
gotoxy(3,25);clreol;
write('L:',plithos,' ',' Select Page: <n>ext <p>revious <s>tay or Page Number');
pkey:=readkey;
case pkey of
'S','s' : begin refresh; end;
'n','N' : begin d1:=d1+1;d2:=d2+1;refresh; end;
'p','P' : begin d1:=d1-1;d2:=d2-1;refresh;end;
'1' : begin d1:=0;d2:=1;refresh;end;
'2' : begin d1:=1;d2:=2;refresh;end;
'3' :begin d1:=2;d2:=3;refresh;end;
'4' :begin d1:=3;d2:=4;refresh;end;
'5' :begin d1:=4;d2:=5;refresh;end;
'6' :begin d1:=5;d2:=6;refresh;end;
'7' :begin d1:=6;d2:=7;refresh;end;
'8' :begin d1:=8;d2:=9;refresh;end;
'9' :begin d1:=9;d2:=10;refresh;end;
else
refresh;
end;
end;
end;
procedure del_char(x,y,i : integer);
begin
delete(grammi[y+page[d1]],x,i);
gotoxy(1,y+1);clreol;write(grammi[y+page[d1]]);
gotoxy(x,y+1);
end;
procedure seekdestroy (var x,y : integer );
var
str : string [20];
begin
gotoxy(3,25);delline;
write('Enter string : ');
readln;read(str);
k:=0;
for i:=page[d1]+1 to page[d2] do
begin
if pos(str,grammi[i]) <> 0 then
begin
k:=k+1; y:=i-page[d1];
x:=pos(str,grammi[i]);
gotoxy(x,i+1);
delete(grammi[i],x,length(str));
gotoxy(1,i+1);clreol;write(grammi[i]);
end;
end;
refresh;
gotoxy(3,25);delline;
write('Deleted ',k,' strings.');
end;
procedure search1 (var x,y : integer);
var
str : string [20];
ans : char;
k: integer;
label l1;
begin
gotoxy(3,25);delline;
write('Enter string : ');
readln;read(str);
refresh;
k:=0;
for i:=page[d1]+1 to page[d2] do
begin
if pos(str,grammi[i]) <> 0 then
begin
x:=pos(str,grammi[i]);
y:=i-page[d1];
gotoxy(x,y+1);
gotoxy(3,25);clreol;
write ('Found at ',x,':',y+page[d1]);
gotoxy(55,25);clreol;
write('Find next? (Y/N)');
gotoxy(x,y+1);
ans:=readkey;
if (ans='n') or (ans='N') then goto l1;
k:=k+1;
end;
end;
l1 : gotoxy(3,25);delline;
write('Found ',k,' matches.');
end;
procedure ins_str (var x,y :integer);
begin
i:=0;
ikey:=' ';
repeat
begin
ikey:=readkey;
if ikey <> chr(13) then
begin
gotoxy(20+i,25);write(ikey);
insert(ikey,grammi[y+page[d1]],x);
gotoxy(1,y+1);clreol;write(grammi[y+page[d1]]);
gotoxy(20+i,25);
i:=i+1;
x:=x+1;
end;
end;
until ikey= chr(13);
gotoxy(3,25);delline;
write('Insert : <l>ine S<t>ring <b>ack:');
end;
procedure ins_line (var x,y :integer);
var i : integer;
begin
inserted_lines:=inserted_lines+1;
gotoxy(1,y+1);
for i:=plithos+inserted_lines downto y+page[d1]+1 do
begin
move(grammi[i-1],grammi[i],80);
end;
fillchar(grammi[i-1],sizeof(grammi[i-1]),' ');
refresh;
gotoxy(3,25);delline;
write('Insert : <l>ine S<t>ring <b>ack:');
kelyfos('n');
y:=y+1;
gotoxy(1,y+1);
end;
procedure del_line (var x,y :integer);
var i : integer;
begin
gotoxy(1,y+1);
for i:=y+page[d1]+1 to plithos+inserted_lines do
begin
move(grammi[i],grammi[i-1],80);
end;
refresh;
gotoxy(3,25);delline;
write('Delete : S<t>ring <c>har <l>ine <b>ack:');
kelyfos('n');
gotoxy(1,y+1);
end;
procedure uppercase_all (x,y : integer);
var
i,j : integer;
str1 : string [80];
begin
gotoxy(1,y);
for i:=page[d1]+1 to page[d2] do
begin
str1:=copy(grammi[i],1,80);
for j:=1 to 80 do
begin
str1[j]:=upcase(str1[j]);
end;
grammi[i]:=copy(str1,1,80);
end;
refresh;
gotoxy(3,25);delline;
write('UpperCase : S<t>ring <a>ll <b>ack:');
kelyfos('n');
end;
{ procedure downcase_all (x,y : integer);
var
i,j : integer;
str1 : string [80];
begin
gotoxy(1,y);
for i:=y to 24 do
begin
str1:=copy(grammi[i],1,80);
for j:=1 to 80 do
begin
str1[j]:=(val(str1[j])+20);
end;
grammi[i]:=copy(str1,1,80);
end;
refresh;
gotoxy(3,25);delline;
write('DownCase : S<t>ring <a>ll <b>ack:');
kelyfos('n');
end; }
procedure mainmenu;
begin
gotoxy(3,25);
write('CRTL: <m>enu Mode <c>ursor Mode: ');
end;
procedure menumode(var flag1 : char );
begin
kelyfos('n');
if key=chr(13) then
begin
gotoxy(3,25); delline;
write('Menu Mode: <s>earch <i>nsert <d>elete <u>pperCase <p>age <e>xit');
end;
if (key='e') or (key='E') then
begin
gotoxy(3,25);delline;
write('Closing File....'); delay(1000);
write('BYE!'); delay(1000);close1;halt;
end;
if (key='S') or (key='s') then
begin
gotoxy(3,25);delline;
write('Search : S<t>ring <c>har <b>ack:');
flag1:='s';
end;
if (key='p') or (key='P') then
begin
gotoxy(3,25);delline;
write('Invoking Refresh Procedure...');delay(1000);
flag1:='p';
refresh1;
end;
if flag1='s' then
begin
if (key='t') or (key='T') then
begin
gotoxy(3,25);delline;
write('Search String....: ');
search1(x,y);
end;
end;
if flag1='s' then
begin
if (key='C') or (key='c') then
begin
gotoxy(3,25);delline;
write('Search Char...: ');
end;
end;
if (key='d') or (key='D') then
begin
gotoxy(3,25);delline;
write('Delete : S<t>ring <c>har <l>ine <b>ack:');
flag1:='d';
end;
if flag1='d' then
begin
if (key='t') or (key='T') then
begin
gotoxy(3,25);delline;
write('Delete String....: ');
seekdestroy(x,y);
end;
end;
if flag1='d' then
begin
if (key='C') or (key='c') then
begin
gotoxy(3,25);delline;
write('Delete Char...: ');
del_char(x,y,1);
end;
end;
if flag1='d' then
begin
if (key='L') or (key='l') then
begin
gotoxy(3,25);delline;
write('Deleting Line...');
del_line (x,y);
end;
end;
if (key='b') or (key='B') then
begin
gotoxy(3,25);delline;
key:=chr(13);
flag1:=' ';
menumode(flag1);
end;
if (key='U') or (key='u') then
begin
gotoxy(3,25);delline;
write('UpperCase : S<t>ring <a>ll <b>ack:');
flag1:='u';
end;
if flag1='u' then
begin
if (key='t') or (key='T') then
begin
gotoxy(3,25);delline;
write('Insert String to UpperCase...: ');
end;
end;
if flag1='u' then
begin
if (key='a') or (key='A') then
begin
gotoxy(3,25);delline;
write('Wait... '); delay(1000);
uppercase_all(x,y);
end;
end;
if (key='i') or (key='I') then
begin
gotoxy(3,25);delline;
write('Insert : <l>ine S<t>ring <b>ack:');
flag1:='i';
end;
if flag1='i' then
begin
if (key='t') or (key='T') then
begin
gotoxy(3,25);delline;
write('Insert String...: ');
ins_str(x,y);
end;
end;
if flag1='i' then
begin
if (key='L') or (key='l') then
begin
gotoxy(3,25);delline;
write('Insert line...: ');
ins_line (x,y);
end;
end;
end;
procedure cursormode (var x,y : integer) ;
begin
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
if (key=chr(56)) then
begin
if y=1 then
begin
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
y:=y;
end
else
begin
x:=x; y:=y-1;
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
end;
end;
if (key=chr(54)) then
begin
if x=80 then
begin
x:=x;
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
end
else
begin
x:=x+1; y:=y;
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
end;
end;
if (key=chr(52)) then
begin
if x=1 then
begin x:=x; end
else
begin
x:=x-1; y:=y;
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
end;
end;
if (key=chr(50)) then
begin
if y=22 then
begin y:=y; end
else
begin
x:=x; y:=y+1;
gotoxy(3,24); write (' ',x,':',y+d1*22,' ');
gotoxy(3,25) ; delline;
write(' Turn NumLock [ON] Use num pad.');
end;
end;
gotoxy(x,y+1);
end;
begin
inserted_lines:=0;
d1:=0;d2:=1;
x:=1;y:=1;
for i:=0 to 10 do
begin
page[i]:=(22*i);
end;
clrscr;
kelyfos(neo);
gotoxy(3,25);
write ('<n>ew Text File <o>pen Text File : ');
key:=readkey;
if (key='n') or (key='N') then
begin
gotoxy(3,25);delline;
write('Enter a Name for the New Text File:');
read(filename1);
flag:='n';
end
else
begin
gotoxy(3,25);delline;
write (' Enter the Name of the Text File to load: ');
read(filename1);
end;
clrscr;
open (flag ,filename1 );
neo:='n'; kelyfos(neo) ;
j:=1; readfile (j);
refresh1;
mainmenu;
repeat
begin
key:=readkey;
if key =chr(3) then
begin
repeat
begin
cursormode(x,y);
key:=readkey;
end;
until (key=chr(13));
end;
if key= chr(13) then
begin
repeat
begin
menumode(flag1);
key:=readkey;
end;
until (key=chr(3));
end;
end;
until (key='E') or (key='e');
gotoxy(3,25);delline;write('Closing File...');delay(2000);
write('BYE!');delay(1000);clrscr;
close1;
end.
</o></n></b></t></l></b></a></t></b></l></c></t></b></c></t></e></p></u></d></i></s></c></m></b></a></t></b></a></t></b></l></c></t></b></t></l></b></t></l></s></p></n> |