ВУЗ:
Составители:
Рубрика:
18
s:='';
end
until Eof(f);
Close(f);
end.
Заметим, что в данной задаче условие Eof(f) эквивалентно условию
ch=#26. Заметим также, что разбиение на лексемы в данном варианте решения
можно использовать в ряде других задач (связанных, например, с разбиением тек-
ста на слова).
Пример 2. Преобразовать строки текстового файла, воспользовавшись для
преобразования каждой строки пользовательской
функцией Convert.
Решение. В отличие от предыдущего примера, где мы пользовались поэле-
ментным или посимвольным считыванием, будем считывать строку целиком, по-
сле чего ее обрабатывать. Такое решение естественно назвать построчной обра-
боткой. Результат преобразования будем записывать во вспомогательный файл
(имя ему дадим произвольно). В конце программы решение содержится во
вспо-
могательном файле, поэтому удалим основной файл и дадим вспомогательному
файлу имя основного:
var f,f1: text; // f1-вспомогательный файл
s: string;
begin
Assign(f,'a.txt');
Reset(f);
Assign(f1,'$tmp.dat');
Rewrite(f1);
while not Eof(f) do
begin
readln(f,s);
s:=Convert(s);
writeln(f1,s)
end
Close(f);
Close(f1);
Erase(f);
Rename(f1,'a.txt');
end.
Обратим внимание на ошибку, которую часто допускают начинающие в по-
добной ситуации. Если вместо процедуры readln в данной программе использо-
вать процедуру read, то программа зациклится. Причина состоит в том, что опе-
ратор read считывает строку до символа-разделителя строк, устанавливая фай-
ловый указатель непосредственно на нем. Поэтому все вызовы read, начиная со
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »