Песни о Паскале - [46]
> Readln; { ждем нажатия Enter }
>end.
В условии цикла WHILE видим отрицание NOT, значит, цикл будет выполняться, пока НЕ обнаружен конец файла. Проверьте работу этой программы. В следующей главе мы рассмотрим запись данных в текстовый файл и завершим наш шифровальный проект. А сейчас, как обычно, подведем итоги.
• Текстовые файлы содержат строки видимых символов, отделенные друг от друга невидимыми на экране управляющими кодами CR (возврат каретки) и LF (перевод строки).
• К текстовым файлам обращаются через файловые переменные типа TEXT.
• Перед чтением файла нужны два шага: 1) связывание файловой переменной с именем файла процедурой Assign, и 2) открытие файла для чтения процедурой Reset.
• Для чтения отдельных строк вызывают процедуру Readln, при этом первым параметром процедуры указывают файловую переменную.
• После открытия файла его чтение начинается с первой строки; каждый вызов процедуры Readln смещает позицию чтения в начало следующей строки.
• Чтение файла возможно, пока не будет прочитана последняя строка. Попытка чтения за концом файла вызовет аварию программы.
• Чтобы узнать о достижении конца файла, вызывают функцию Eof, которая возвращает TRUE, если достигнут конец файла.
• Признак окончания файла исследуют в начале цикла, и для этого лучше подходит оператор цикла WHILE-DO.
• По окончании работы с файлом его закрывают процедурой Close.
А) Можно ли связать текстовую переменную F с файлом оператором присваивания?
> F := ’c:\autoexec.bat’;
Б) Напишите программу для вывода на экран файла, имя которого задается с клавиатуры.
В) Напишите три функции для подсчета:
• строк в файле;
• видимых символов в файле;
• всех символов файла (фактический объём файла).
Функции принимают один параметр – ссылку на файловую переменную. Напишите программу, определяющую упомянутые характеристики файла.
Г) Объявите две файловые переменные, свяжите их с одним и тем же файлом, а затем откройте через обе переменные. Вызовет ли это ошибку? Объясните результат, исходя из здравого смысла.
Д) Усовершенствуйте программу «вопрос-ответ» (глава 16) с тем, чтобы ответы хранились не в программе, а в отдельном текстовом файле. Тогда пользователи программы сами смогут сочинять ответы.
Е) Напишите процедуру для вывода на экран N–й строки файла, где N – параметр процедуры. Воспользовавшись этой процедурой, напишите программу для распечатки строк файла в обратном порядке. Подсказка: предварительно посчитайте количество строк в файле.
Глава 26
Я не читатель, – я писатель!
Наш шпионский проект по шифрованию файла подвигается к финишу. Ступим завершающий шаг: освоим запись в текстовый файл.
Порядок записи в текстовый файл схож с его чтением, судите сами:
• для доступа к файлу используют файловую переменную типа TEXT;
• файловую переменную надо связать с файлом процедурой Assign;
• по окончании записи файл закрывают процедурой Close.
Вот схема, где отражены четыре этапа записи в файл (рис. 56).
Как видите, запись в файл отличается от чтения вторым и третьим этапами, ими и займемся.
Итак, после привязки файла процедурой Assign, файл открывают для записи процедурой Rewrite – «перезапись».
> Rewrite(F);
Тут находим первое отличие: если для чтения требуемый файл должен существовать, то для записи этого не нужно. Если файла ещё нет, будет создан новый пустой файл. А при наличии файла он будет очищен, и вся информация в нём сотрется, как мел с доски. Будьте внимательны, иначе лишитесь нужной информации!
В открытый таким образом файл можно «печатать» нужные нам строки. Как? Вы уже знаете – процедурой Writeln. А что указать первым параметром? Правильно, – файловую переменную, вот так:
> Writeln(F, S); { F – переменная типа TEXT, S – строковая }
Каждый вызов такой процедуры добавляет в конец файла очередную строку с разделителями. В отличие от чтения, где надо следить за достижением конца файла, при записи вы ограничены лишь объёмом винчестера и здравым смыслом (в большей степени последним).
По окончании записи файл закрывают все той же процедурой Close. Как и при чтении, закрытие файла освобождает выделенную для него память и снимает блокировку файла, позволяя другим программам работать с ним. К тому же закрытие файла гарантирует сохранение записанных данных на диске.
Рассмотрим небольшой пример: заполнение файла числами от 1 до 10.
>{ P_26_1 }
>var F: text; { файловая переменная }
> k: integer;
>begin
> Assign(F, 'P_26_1.txt'); { назначаем имя файла }
> Rewrite(F); { открываем файл для записи }
> for k:=1 to 10 do { записать 10 строк с числами }
> Writeln(F, k);
> Close(F); { закрываем файл }
>end.
Есть вопросы? Запустите программу и проверьте, работает ли она. Запустили? Теперь отыщите в папке с программой файл «P_26_1.TXT» и откройте его любым редактором. Уверен, что вы обнаружите в нём столбик из десяти чисел.
Подойдя к финалу нашего проекта, мы научились: 1) шифровать отдельную строку, 2) читать строки из файла и 3) записывать строки в файл. Пора соединить все это: читая строки исходного файла, будем шифровать их, и записывать в другой файл, – так будет работать наша программа.
Что делать, если проснулась в морге и понятия не имеешь, как могла в нем оказаться? Но страшно даже не это. Что делать, когда память подвела настолько, что неясно даже - кто ты?! В голове остались лишь странные имена, а ночью снятся слишком реальные сны. А потом... черт, да как же я могла такое забыть?! Я же ведьма!!! И у меня любовь с оборотнем, которого еще спасти надо. А заодно и целое королевство, иначе им завладеет беспощадный злодей. Вот только, это совсем другой мир... Хорошо, что ликорис уже зацвел!
Данная книга содержит избранные произведения поэтессы за период 2007—2016 гг. Это философская, любовная, пейзажная лирика, проникнутая трепетным отношением к природе, восхищением красотой человеческой души.
В далекой сказочной стране живут оборотни и люди, маги и демоны, орки и драконы. И сказки в ней случаются разные - добрые, веселые и даже страшные. А там где есть сказки, там обязательно есть счастье, а там где счастье, там должны быть феи.
Знала ли юная Марианна, что кошмарные сны - это часть воспоминаний далекого прошлого. Прошлого, которое предстоит разгадать нашей героине. Ведь неизвестно как, девушка попала совсем другой мир, где сплошь и рядом те, кто не желает ей добра. И, как в сказках, к ней приходит на помощь.... Нет, не прекрасный принц на белом коне, а парень с маской на лице и выразительными изумрудными глазами. Что же ждет нашу героиню в этом мире? Сможет она узнать свое прошлое и принять его или же попытается от него убежать, ведь по пятам идет охотник....
Шестнадцатилетняя девочка Энни, через книгу, попадает в город Сновидений, в котором происходит невероятная магия Луны. Там она узнает, что относится к необыкновенному роду людей – хранителям, которые защищают и помогают людям. Чтобы вернуться домой ей нужно найти лунный цветок расцветающий раз в сто лет, и который может исполнить любое, но одно желание.