- •Программирование на языке
- •Object pascal в среде delphi
- •(Лабораторные работы)
- •Содержание
- •Лабораторная работа 1. Программирование линейных алгоритмов
- •1.1. Базовые элементы языка Object Pascal
- •1.1.1. Алфавит языка
- •1.1.2. Синтаксис языка
- •1.1.3. Основные типы данных
- •1.1.4. Оператор присваивания
- •1.1.5. Целые типы данных
- •1.1.6. Вещественные (действительные) типы данных
- •1.1.8. Cимвольные типы данных
- •1.1.9. Строкоые типы данных
- •1.1.10. Арифметические вычисления
- •1.2. Интегрированная среда разработчика delphi
- •1.3. Структура программ delphi
- •Interface
- •Implementation
- •1.4. Пример написания программы
- •1.4.2. Изменение заголовка формы
- •1.4.6. Написание программы обработки события
- •1.4.7. Написание программы обработки события
- •2.3. Оператор выбора Case
- •2.4. Составной оператор
- •2.5. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Interface
- •Implementation
- •2.7. Индивидуальные задания
- •3.1.2. Организация цикла с помощью оператора repeat
- •3.2. Организация вложенных циклов
- •3.3. Организация прерывания цикла
- •3.4. Алгоритмы, использующие рекуррентную последовательность
- •3.5. Пример написания программы
- •Interface
- •Implementation
- •3.6. Индивидуальные задания
- •Лабораторная работа 4. Программирование с использованием массивов
- •4.1. Работа с массивами
- •4.2. Операции над массивами
- •4.3. Примеры часто встречающихся алгоритмов работы с массивами
- •4.4. Компонент tStringGrid для ввода/вывода массивов
- •4.5. Пример написания программы с использованием tStringGrid
- •Interface
- •Implementation
- •4.6. Компонент tEdit для ввода одномерных массивов
- •4.7. Пример написания программы с использованием tEdit
- •4.7. Компонент tMemo для ввода/вывода одномерных массивов
- •4.8. Пример написания программы с использованием tMemo
- •4.9. Индивидуальные задания
- •Лабораторная работа 5. Программирование с использованием строковых данных
- •5.1. Работа со строками
- •5.2. Пример написания программы
- •Лабораторная работа 6. Программирование с использованием подпрограмм и модулей
- •6.1. Описание подпрограмм
- •6.2. Передача данных через формальные параметры
- •6.3. Процедурные типы
- •6.4. Область видимости переменных
- •6.5. Пример написания программы с использованием процедур
- •Interface
- •Implementation
- •6.6. Использование модулей
- •6.7. Пример написания программы с использованием модуля
- •6.7.1. Создание модуля
- •6.7.2. Подключение модуля
- •Implementation
- •6.8. Индивидуальные задания
- •Лабораторная работа 7. Построение графиков
- •7.1. Компонент tChart
- •7.2. Пример написания программы
- •7.4. Индивидуальные задания
- •Лабораторная работа 8. Работа с файлами
- •8.2. Прямая работа с файлами (классический способ)
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Запись и чтение типизированных файлов
- •Запись и чтение нетипизированных файлов
- •8.3. Диалоги открытия и сохранения файлов
- •8.4. Пример написания программы
- •8.5. Индивидуальные задания
- •Средства отладки программ в delphi
- •Литература
8.2. Прямая работа с файлами (классический способ)
Технология работы с файлами в системе Delphi требует определённого порядка действий:
Прежде всего файл должен быть открыт. Система следит, чтобы другие приложения не мешали работе с файлом. При этом определяется, в каком режиме открывается файл - для изменения или только считывания информации. После открытия файла в программу возвращается его идентификатор, который будет использоваться для указания на этот файл во всех процедурах обработки.
Начинается работа с файлом. Это могут быть запись, считывание, поиск и другие операции.
Файл закрывается. Теперь он опять доступен другим приложениям без ограничений. Закрытие файла гарантирует, что все внесённые изменения будут сохранены, так как для увеличения скорости работы изменения предварительно сохраняются в специальных буферах операционной системы.
В Delphi реализовано несколько способов работы с файлами. Познакомимся со классическим способом, связанным с использованием файловых переменных.
Файл задается с помощью зарезервированного слова file. Затем можно указать тип файла
var
f1:file of char;
f2:TextFile;
f3:file;
Можно выделить три вида файлов:
Типизированные файлы(задаются с помощью file of..)
Текстовый файл(определяются типом TextFile)
Не типизированные файлы(определяются типом File)
Доступ к файлам
Работа с файлами становится доступна программе после выполнения процедуры открытия файла. Эта процедура связывает файловую переменную с именем существующего или создаваемого файла, а также указание доступа к нему: чтение, запись или и чтение и запись. Файловая переменная связывается с именем файла с помощью процедуры AssignFile:
var
f : file;
begin
...
assignFile(f, 'newfile.txt');
...
end.
Первый параметр - файловая переменная, второй - название файла. Затем требуется инициализировать файл. Для этого существует три процедуры:
Reset - эта процедура открывает для чтения уже созданный файл. Для нетипизированных файлов необходимо указывать длину записи.
Rewrite - эта процедура открывает файл для записи. Если файла нет, то он создается, если есть, то он перезаписывается, уничтожая тем самым содержимое старого файла. Для нетипизированных файлов необходимо указывать длину записи.
Append - эта процедура только для текстовых файлов, она открывает текстовый файл и устанавливает указатель файла в конец, тем самым становится возможность сделать дозапись в старый файл.
После завершения работы с файлом его необходимо закрыть с помощью процедуры CloseFile.
var f1 : file;
begin
assignFile(f1, 'newfile');
rewrite(f1, 1); //f1 нетипизированный файл, мы должны указать длину
// записи (обычно единица)
CloseFile(f1);
end.
Подпрограммы для работы с файлами
Функция |
Описание |
Function EOF(var F):boolean |
Возвращает True если файловый указатель стоит в конце файла. |
Procedure Erase(var f) |
Уничтожает файл F. Перед уничтожением необходимо закрыть файл с помощью процедуры CloseFile. |
FileExists(const filename:string):boolean |
Возвращает True если файл с именем filename существует. |
procedure Flush(var f) |
Сохраняет изменения файла. |
procedure Rename(var f;NewName:string) |
Переименовывает файл F, FileName - новое имя. Перед выполнением процедуры необходимо закрыть файл с помощью процедуры CloseFile. |
function FileSize(var f):integer; |
Возвращает размер файла в байтах, если файл нетипизированный, или в количестве записей, если файл типизированный. |