Назначение файла (AssignFile)
Объявление файловой переменной задает только тип компонентов файла. Для того чтобы программа могла выводить данные в файл или считывать данные из файла, необходимо указать конкретный файл, т. е. задать имя файла. Имя файла задается вызовом процедуры AssignFile, связывающей файловую переменную с конкретным файлом. Описание процедуры AssignFile выглядит следующим образом: AssignFile(var f, ИмяФайла:string) Имя файла задается согласно принятым в Windows правилам. Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу. Ниже приведены примеры вызова процедуры AssignFile: AssignFile(f,’a:\result.txt’); AssignFile(f,'\students\ivanov\korni.txt'); fname:=('otchet.txt') ; AssignFile(f,fname);
3.3.1.3. Открытие файла для вывода (Rewrite, Append). Перед выводом в файл его необходимо открыть. Если программа, формирующая выходной файл, уже использовалась, то возможно, что файл с результатами работы программы уже есть на диске. Поэтому программист должен решить, как поступить со старым файлом: заменить старые данные новыми или новые данные добавить к старым. Способ использования старого варианта определяется во время открытия файла. Возможны следующие режимы открытия файла для записи в него данных: - Перезапись (запись нового файла поверх существующего или создание нового файла) - Добавление в существующий файл Для того чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру Rewrite (f), где f — файловая переменная типа TextFiie. Для того чтобы открыть файл в режиме добавления к уже существующим данным, находящимся в этом файле, необходимо вызвать процедуру Append (f), где f — файловая переменная типа TextFiie. Нижеследующий листинг содержит процедуру, которая запускается нажатием кнопки Button1. Она открывает файл в режиме создания нового или замещения существующего файла и записывает в него 3 строки.
procedure TFoml.Button1Click(Sender: TObject) ; var f: TextFile; i: integer; begin AssignFile(f,'a:\test.txt'); Rewrite(f) ; for i:=l to 3 do writeln(f,'Строка ',i); CloseFile(f); end; В результате выполнения приведенной выше процедуры на диске А: появляется файл test. txt. Вот его распечатка: Строка 1 Строка 2 Строка 3
В следующем листинге приведена процедура, которая запускается нажатием кнопки Button2. Она открывает файл test. txt, созданный процедурой Tform1.Button1Click, и добавляет в него две строки. procedure Tform1.Button2Click (Sender: TObject); Var f:TextFile; i:integer; begin AssignFile(f,'a:\test.txt') ; Append(f); for i:=3 to 5 do writeln(f,'Строка ',i); CloseFile(f); end; В результате выполнения программы содержимое файла test. txt изменяется: Строка 1 Строка 2 Строка 3 Строка 4 Строка 5
Вывод в файл (write, writeln). Непосредственно вывод в текстовый файл осуществляется при помощи инструкций write или writeln. В общем виде эти инструкции записываются следующим образом: write(ФайловаяПеременная,СписокВывода) writeln(ФайловаяПеременная, СписокВывода) где ФайловаяПеременная — переменная, идентифицирующая файл, в который выполняется вывод; СписокВывода — разделенные запятыми имена переменных, значения которых надо вывести в файл. Помимо имен переменных в список вывода можно включать строковые константы. Например, если переменная f является переменной типа TextFiie, то инструкция вывода значений переменных xl и х2 в файл может быть такой: write(f, 'Корни уравнения ',xl,х2);
Различие между инструкциями write и wnteln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ "новая строка".
Закрытие файла (CloseFile).
По окончании работы с файлом его следует закрыть процедурой CloseFile(f);
3.3.2. Ввод из файла
Исходные данные для программы можно вводить не только с клавиатуры, но и из текстового файла. Для того чтобы воспользоваться этой возможностью, нужно: - Объявить файловую переменную типа TextFile (var f : TextFile), - Назначить ей при помощи инструкции AssignFile имя файла, из которого будут считываться данные, - Открыть файл для чтения (ввода) (Reset(f)); - Прочитать (ввести) данные, используя инструкцию read(f,…) или readln(f,…). - Закрыть файл (CloseFile(f)) Открытие файла (Reset). Открытие файла для ввода (чтения) выполняется вызовом процедуры Reset, имеющей один параметр — файловую переменную. Перед вызовом процедуры Reset с помощью функции AssignFile файловая переменная должна быть связана с конкретным файлом. Например, следующие инструкции открывают файл для ввода AssignFile(f,’с:\data.txt’); Reset (f) ;
3.3.2.2. Чтение данных из файла (Read, Readln) Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются следующим образом: read(ФайловаяПеременная,СписокПеременных) readin(ФайловаяПеременная,СписокПеременных)
где f – файловая переменная — переменная типа TextFile; Список переменньк — имена переменных, разделенные запятыми. Чтение чисел Следует понимать, что в текстовом файле находятся не числа, а их изображения (то есть строки). Действие, выполняемое инструкциями read или readln, фактически состоит из двух: - сначала из файла читаются символы до появления разделителя (пробела или конца строки), - затем прочитанные символы, являющиеся изображением числа, автоматически преобразуются в число, и полученное значение присваивается переменной. Например: AssignFile (f,'а: \data. txt'); Reset (f); { открыть файл для чтения } Read(f,a); read(f,b,c); CloseFile(f);
Отличие инструкции readln от read состоит в том, что после считывания из файла очередного числа и присвоения полученного значения переменной, имя которой стоит последним в списке параметров инструкции readin, указатель чтения из файла автоматически перемещается в начало следующей строки файла, даже в том случае, если за прочитанным числом есть еще числа.
Чтение строк В программе строковая переменная может быть объявлена с указанием длины или без, например: var stroka1 : string[10]; stroka2 : string. Begin AssignFile(f,’c:\text.txt’); Reset(f); Read(f,Stroka1); Read(f,Stroka2); CloseFile(f); End;
При чтении из файла значения строковой переменной, длина которой явно задана в ее объявлении, считывается столько символов, сколько указано в объявлении, но не больше, чем в непрочитанной части текущей строки. При чтении из файла значения строковой переменной, длина которой явно не задана в объявлении переменной, значением переменной становится оставшаяся после последнего чтения часть текущей строки.
Контрольные вопросы
1. Что такое имя идентификатора и каковы правила его написания ? 2. Чем отличается константа от переменной ? Каким образом они объявляются и где ? 3. Перечислите основные целочисленные типы данных с примерами их объявления. 4. Перечислите основные вещественные типы данных с примерами их объявления. 5. Какие бывают разновидности строковых данных и в каких случаях какие из них целесообразно применять? 6. Приведите пример объявления булевских переменных. 7. Напишите арифметическое выражение с использованием арифметических операций сложения, вычитания, умножения и деления, группируя блоки выражения с помощью скобок. 8. Чем отличаеются логические операции от арифметических? 9. Для чего нужны опреации отношения, и какие для них используются символы? 10. Каким образом можно преобразовать целые и вещественные числа в строковый тип данных? 11. Как можно преобразовать строки в целые или вещественные данные? 12. Как ввести числовые данные через окно ввода и окно однострочного редактора TEdit? 13. Как ввести строковые данные через окно ввода и окно однострочного редактора TEdit? 14. Как двумя способами вывести строковую информацию в окно сообщения? Сравните эти способы. 15. Как двумя способами вывести числовую информацию в окно сообщения? Сравните эти способы. 16. Как вывести информацию в окно редактора Tedit или в поле диалогового окна TLabel? 17. Напишите фрагмент кода для создания файла и записи в него текста. 18. Напишите фрагмент кода для чтения текстовой информации из файла. 19. Как записывать и считывать информацию нетекстовую?
Лабораторная работа 6
«Использование стандартных и пользовательских модулей, процедур и функций»
Цель работы: исследование возможностей использования стандартных процедур и функций, создание и применение пользовательских процедур и функций.
1. Задание на лабораторную работу.
1.1. Ознакомиться со стандартными модулями, процедурами и функциями.Создать, откомпиллировать и исполнить программу по расчету арифметических выражений с использованием стандартных функций. 1.2. Ознакомиться с правилами создания пользовательских модулей, процедур и функций. 1.3. Создать, откомпиллировать и исполнить программу с использованием собственных библиотечного модуля и пользовательской процедуры или функции (задание выдается преподавателем). 1.4. Проанализировать полученные результаты и оформить отчет по лаб. Работе.
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (433)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |