- •Имена 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. Задание к лабораторной работе
- •Контрольные вопросы
4. Чтение и запись текстовых файлов
Запись данных в текстовый файл осуществляется процедурой
procedure Write(var F: TextFile; <список выражений>);
Выражения могут быть типов Char, Integer, Real, String, Boolean. При этом допускается возможность форматирования.
Например:
Write(F, 'Вам ', I, ' лет');
Аналогичная процедура Writeln отличается от Write только тем, что после записи пишет символ перехода на новую строку, т.е. Writeln формирует одну строку.
Чтение данных из текстового файла осуществляется последовательно от его начала процедурой
procedure Read(var F: TextFile; <список переменных>);
где в списке перечисляются переменные, в которые читаются данные из файла. Например, если определить переменные S1 и S2 как
var S1,S2 : string[4];
то чтение строки, записанной в файл приведенным выше оператором, если использовать оператор
Read(F, S1, I, S2);
даст значение S1, равное "Вам ", значение I равное записанному числу лет, и значение S2, равное " лет".
Аналогичная процедура Readln отличается от Read только тем, что после чтения переводит текущую позицию в файле на новую строку. Если в процедуре Readln не задан список переменных, то она просто пропускает текущую строку и переходит к следующей.
5. Чтение и запись типизированных файлов
Для типизированных файлов процедуры чтения и записи Read и Write не отличаются от рассмотренных ранее для текстовых файлов. Только типы выражений при записи и переменных при чтении должны соответствовать объявленному типу данных файла. Процедур, аналогичных Readln и Writeln для типизированных файлов нет. Зато есть процедура Seek, позволяющая перемещаться по файлу не только последовательно, как в текстовых файлах, но сразу переходить к требуемому элементу. Ее синтаксис:
procedure Seek(var F: File, N: Longint);
где N — номер элемента. Эта процедура перемещает текущую позицию в файле на нужный элемент.
Имеется также функция FilePos:
function FilePos(var F): Longint;
которая возвращает текущую позицию в файле.
6. Чтение и запись нетипизированных файлов
В нетипизированных файлах в место процедур записи и чтения Read и Write имеются процедуры BlockRead и BlockWrite, объявленные следующим образом:
procedure BlockWrite (var f: File; var Buf; Count: Word; [var Result: Word]);
procedure BlockRead (var f: File; var Buf; Count: Word; [var Result: Word]);
В этих процедурах:
Buf — любая переменная, содержимое которой записывается в файл или в которую читаются записи из файла.
Count — выражение типа Word, определяющее число записываемых или читаемых записей.
В необязательный параметр Result заносится число реально записанных или прочитанных записей. Это число может быть меньше или равно числу, указанному как Count. Недостаточное значение Result при чтении может, например, свидетельствовать, что конец файла достигнут ранее, чем прочиталось заданное число записей. А при записи это может означать, например, что диск переполнился.