Удалить из текстового файла комментарии вида {comments} — Pascal(Паскаль)

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.

Leave a Comment

44 − = 40