- •Имена unc
- •1.1.2. Процедуры и функции win32 для работы с файлами
- •1. Создание или открытие файла
- •2. Запись в файл
- •3.Чтение из файла
- •4. Закрытие файла
- •1.1.3. Пример программы, использующей функции win32 для доступа к файлам и каталогам
- •1.1.4. Функции delphi для работы с файлами
- •1. Связывание логического и физического имен файлов
- •2. Типы файлов
- •2. Открытие файла
- •4. Чтение и запись текстовых файлов
- •5. Чтение и запись типизированных файлов
- •6. Чтение и запись нетипизированных файлов
- •7. Закрытие файлов
- •8. Проверка окончания файла
- •9. Файловый ввод/вывод с помощью компонентов
- •10. Обработка ошибок при работе с файлами в delphi
- •1.1.5. Пример программы, использующей функции delphi для доступа к файлам и каталогам
- •1.2. Задание к лабораторной работе
- •Контрольные вопросы
1.1.4. Функции delphi для работы с файлами
1. Связывание логического и физического имен файлов
Для доступа к файлам чаще всего используется специальная файловая переменная. Она связывается с указанным файлом процедурой AssignFile. Эта процедура имеет синтаксис:
procedure AssignFile(var F: File, S: string);
где
F – переменная любого типа;
S — строка, содержащая имя файла.
Например, операторы
AssignFile(Fl, 'Test.txt');
AssignFile(F2, OpenDialogl.FileName);
связывают файловые переменные Fl и F2 соответственно с файлом "Test.txt" и с файлом, имя которого записано в свойстве FileName компонента — диалога OpenDialog1.
2. Типы файлов
В Delphi различают файлы трех видов:
-
текстовые файлы,
-
типизированные файлы
-
нетипизированные файлы.
Текстовые файлы состоят из последовательностей символов, разбитых на строки. В Object Pascal предопределен тип TextFile, соответствующий текстовому файлу. Таким образом, объявление файловой переменной может иметь вид:
Var <имя файловой переменной>: TextFile;
Типизированные файлы являются двоичными файлами, содержащими последовательность однотипных данных. Объявление файловых переменных таких файлов имеет вид:
var <имя файловой переменной>: file of <тип переменной>;
Например:
var F: file of real;
Тип данных может быть не только простым типом, но и, например, типом записей. Так, операторы:
type
PhoneEntry = record Fam, Nam: string[20];
PhoneNumber: string[15];
Listed: Boolean;
end;
PhoneList = file of PhoneEntry;
объявляют типизированный файл, содержащий записи телефонных номеров.
Нетипизированные файлы — это двоичные файлы, которые могут содержать самые различные данные в виде последовательности байтов. Программист при чтении этих данных сам должен разбираться, какие байты к чему относятся.
Тип файловой переменной нетипизированного файла объявляется следующим образом:
var <имя файловой переменной>: file;
2. Открытие файла
Открытие существующего файла осуществляется процедурой Reset, формат которой (кроме нетипизированных файлов) имеет следующий вид:
procedure Reset(var F: File);
Файловая переменная F перед обращением к этой процедуре должна быть связана с файлом (с помощью функции AssignFile).
Создание и открытие нового файла осуществляется процедурой Rewrite, формат которой (кроме нетипизированных файлов) имеет следующий вид:
procedure Rewrite(var F: File);
Открытие нетипизированных файлов осуществляется теми же процедурами Reset и Rewrite, но их синтаксис несколько отличен от аналогичных процедур для других видов файлов:
procedure Reset(var F: File; Recsize: Word);
procedure Rewrite(var F: File; Recsize: Word);
В этих процедурах Recsize — необязательный параметр, который указывает размер одной записи в файле (одного элемента файла) в байтах. Если параметр Recsize не задан, то размер одной записи предполагается равным 128 байтам.