Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика_программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.36 Mб
Скачать

Тема: «Файлы»

Под словом файл в 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 выполнится в любом случае. Таким кодом обычно делают закрытие файла. Если даже ошибка и совершится, файл все равно будет закрыт и программа не повиснет, а будет продолжать работу. Приучите себя ВСЕГДА использовать этот блок при работе с сомнительным кодом. Как бы хороша ни была программа, всегда найдется пользователь, который заставит ее сделать ошибку.