- •Кнопки BitBtn
- •Компонент MaskEdit
- •Тема: «Работа с текстовыми файлами». TStringList. Общие принципы работы с файлами»
- •Общие принципы работы с файлами
- •Тема: «Файлы»
- •Задание
- •Тема «Записи»
- •Тема: «Динамические массивы»
- •Задание
- •Тема: «Многомерные массивы. Сетка строк StringGrid»
- •Сетка строк StringGrid
- •Тема: «Украшательства проект. Image. ImageList»
- •Самостоятельное задание
- •Тема: «Мультимедиа в Delphi»
- •Тема: «Побайтовое копирование / перенос файлов»
- •Тема: «Панель инструментов. Кнопка SpeedButton. Перемещаемые панели инструментов»
- •Кнопка SpeedButton
- •Перемещаемые панели инструментов
- •Тема: «ActionList и mdi-окна»
- •Тема: «Введение в базы данных. Базы Данных. Bde. Навигация. Типы данных»
- •Навигация
- •Типы данных
- •Закладки (Bookmarks)
- •Свойства bof, eof и циклическая обработка
- •Открытие и закрытие таблицы или связанных таблиц
- •Свойства RecordCount и RecNo таблицы
- •Создание собственной таблицы
- •Тема: «Методы редактирования баз данных»
- •Самостоятельное задание
- •Тема: «Индексы. Подсчет данных. Подстановочные поля. Фильтрация данных. Отчетность» Индексы
- •Подсчет данных
- •Подстановочные поля
- •Фильтрация данных
- •Отчетность
Тема: «Файлы»
Под словом файл в Delphi (и в любом языке программирования) понимается область внешней памяти ПК (жесткий диск, дискета, компакт- диск и т.п.), которая имеет имя.
Файлы в Delphi могут обрабатываться различными способами, в том числе и через функции WinAPI. Файлы могут быть трех вариантов:
Типизированные. Такие файлы принадлежат к какому-то типу данных, и могут работать только с ним. Это очень удобно для создания файлов записей. Такие файлы мы будем изучать чуть позже.
Текстовые файлы. Такой тип файлов предназначен для работы с текстом.
Нетипизированные файлы. Предназначены для побайтовой работы с файлами любого типа. Например, такой тип удобно использовать для копирования файла, его переноса или переименования.
Файлы объявляются следующим образом:
var
f1 : File of <тип>; //типизированные файлы
f2 : TextFile; //текстовый тип файлов
f3 : File; //нетипизированные файлы
Однако, присвоив какой-то переменной файловый тип, мы еще не можем работать с файлом. Для этого мы вначале должны связать эту переменную с файлом. Делается это следующим образом:
AssignFile(f1, 'filename.txt'); //связывание переменной с файлом
После этой функции, мы можем обращаться с переменной f1 как с файлом filename.txt. Однако, если такого файла нет, мы получим ошибку, поэтому перед использованием связывания желательно делать проверку на наличие файла. Такая проверка проводится функцией FileExists(). Ее синтаксис следующий:
FileExists('c:\01\myfile.txt');
В качестве параметра в функцию передается адрес файла и его имя. Можно передавать только имя, но тогда программа будет искать файл в текущей директории. Функция возвращает True, если такой файл существует, и False в противном случае. Поэтому мы можем использовать ее для проверки наличия файла:
adres := 'c:\01\myfile.txt';
if FileExists(adres) then begin
AssignFile(f1, adres); //связали файловую переменную с файлом
… //дальнейшая работа с файлом
end; //if
В дальнейшем, при работе с файлом, может возникнуть исключительная ситуация. Внимание! Такой термин мы встречаем в первый раз, однако он очень важен для понимания. Что такое исключительная ситуация? Это любая ошибка программы, которая может произойти во время работы. Например, вы открыли какой-то сетевой файл и начали работу с ним. А другой пользователь в это время взял, да удалил этот файл. При попытке чтения из несуществующего файла, или записи в него, произойдет ошибка и создастся исключительная ситуация. Если вы не обработаете эту ошибку, то компьютер, скорее всего, намертво повиснет.
Поэтому в любой ситуации, когда имеется риск возникновения исключительной ситуации, программист ВСЕГДА должен ее обработать. Для этого существует блок try-finally-end:
try
//блок кода, в котором может произойти ошибка
finally
//код, который должен выполниться в любом случае,
//например, код закрытия файла
end; //try
Если наша программа совершила непоправимую ошибку, то код, заключенный в блоке finally выполнится в любом случае. Таким кодом обычно делают закрытие файла. Если даже ошибка и совершится, файл все равно будет закрыт и программа не повиснет, а будет продолжать работу. Приучите себя ВСЕГДА использовать этот блок при работе с сомнительным кодом. Как бы хороша ни была программа, всегда найдется пользователь, который заставит ее сделать ошибку.
