type
tfile=text;
str1=string[255];
str2=string[50];
Procedure check(var f:tfile; nf:str1);
begin
write('Enter file name: ');
readln(nf);
assign(f,nf);
{$I-} reset(f); {$I+}
if IOResult <> 0 then
begin
writeLn('File ',nf,' not exist!');
writeLn('Please press Enter');
readln;
halt;
end;
end;
Procedure deletecom(var f,g:tfile; ng,nf:str2; s:str1);
var
p1,p2:byte;
begin
ng:='tmp.txt';
assign(g,ng);
rewrite(g);
while not eof(f) do
begin
readln(f,s);
p1:=pos('{',s);
p2:=pos('}',s);
if (p1=0)and(p2=0) or ((copy(s,p1+1,1)='$') and (copy(s,p2-1,1)='+') or (copy(s,p2-1,1)='-')) then writeln(g,s)
else if (p1>1)and(p2=0) then writeln(g,copy(s,1,p1-1))
else if(p1>0)and(p2>0) then
begin
delete(s,p1,p2-p1+1);
if s<>'' then writeln(g,s);
end;
end;
end;
Procedure final(var f,g:tfile; st:str1; nf:str2);
begin
rewrite(f);
{$I-} reset(g) {$I+};
while not eof(g) do
begin
readln(g,st);
writeln(f,st);
end;
close(f);
close(g);
erase(g);
write('File ',nf, ' written without comments');
readln
end;
var g:tfile;
f:tfile;
nf,ng:str2;
s,st:str1;
Begin
check(f,nf); {Проверка файла на существование}
deletecom(f,g,ng,nf,s); {Переписываем все в другой файл без комментариев}
final(f,g,st,nf);{Очищаем исходный файл и переписываем в него все из второго, удаляем второй файл}
end.