файлы
Составить программу, вырезающую из файла с текстом программы на языке Turbo-Pascal все комментарии
-
- Сообщения: 526
- Зарегистрирован: 03 янв 2009, 23:17
- Откуда: Voronezh
- Контактная информация:
Вот Вам небольшой пример:
но это для тривиальных программок по типу:
Для применения на практике нужно вводить более серьезные проверки наличия комментариев
Код: Выделить всё
uses crt;
var
f, g: Text;
filename, tmp: string;
ioerror: Integer;
k: Byte;
CommentEnd: boolean;
function CropString(s: string; StartPos: Byte; StopChar: char): string;
var
i: Byte;
stop: Boolean;
begin
i := StartPos;
stop := False;
while not stop do
begin
stop := (s[i] = StopChar) or (i = Length(s));
Delete(s, i, 1);
end;
CropString := s;
end;
begin
repeat
repeat
ClrScr;
Write('Name of file: ');
ReadLn(filename);
if filename = '' then
begin
WriteLn('Empty string!');
ReadKey;
end;
until filename <> '';
Assign(f, filename);
{$I-}
Reset(f);
{$I+}
ioerror := IOResult;
if ioerror <> 0 then
begin
WriteLn('IO Error!');
ReadKey;
end;
until ioerror = 0;
Assign(g, 'tmp_' + filename);
Rewrite(g);
CommentEnd := True;
while not EOF(f) do
begin
ReadLn(f, tmp);
if not CommentEnd then
tmp := CropString(tmp, 1, '}');
k := pos('{', tmp);
CommentEnd := (k = 0) or (pos('}', tmp) > 0);
if k > 0 then
tmp := CropString(tmp, k, '}');
WriteLn(g, tmp);
end;
Close(f);
Erase(f);
Rename(g, filename);
Close(g);
end.
Код: Выделить всё
program simple;
begin
WriteLn('Hello, World!'); {Short comment}
ReadLn; {Long
comment}
end.
Нет религии выше истины