С файловыми переменными тесно связаны и сами файлы. Но для чтения, записи и создания файлов нужно определиться с его типом. В Delphi эту тему мы рассмотрим более подробнее. Ведь есть множество таких форматов, которые открыть нелегко (а может даже и невозможно) с помощью посторонних приложений.
Итак, в Паскале, в зависимости от самого файла, переменную можно описать следующим образом:
- Текстовый файл var f:text;
- Типизированный файл var имя:file of тип;
Предварительно можно определить новый тип данных - Бестиповый файл var имя:file.
Функции для обработки файлов:
Функция | Описание | |
Assign(f,s) | Процедура, связывающая файловую переменную f, с полным именем файла s. Образец: var f:file of real; Begin Assign(f,’c:TPabc.txt’); |
|
Eof(f) | Функция, для проверки достижения конца файла. Образец: While not EOF(f) do Begin {пока не достигнут конец файла делай…} |
|
Reset(f) | Файл f открыт для чтения и доступен его первый элемент, далее можно выполнять чтение и запись информации из файла. | |
Rewrite(f) | Процедура, которая открывает и очищает файл для новой записи. | |
Close(f) | Закрывает файл. После записи информации в файл его необходимо обязательно закрыть, при чтении закрывать файл не обязательно. | |
Rename(f,s) | Процедура переименования файла, где f – файловая переменная, s – новое имя файла (строковая переменная). | |
Erase(f) | Процедура для удаления файла связанного с переменной f. Для корректного выполнения удаления, файл должен быть закрыт. | |
Append(f) | Процедура для добавления информации в конец файла. | |
Read(f,x1,x2,…,xn) Read(f,x) | Операторы, которые последовательно считывают компонент из файла в указанные переменные. Процедура read не проверяет, достигнут ли конец файла. За этим нужно следить с помощью функции EOF. | |
Write(f,x1,x2,…,xn) Write(f,x) | Оператор последовательно записывающий в файл значения переменных. |
Типы файлов и переменных должны совпадать, кроме текстовых файлов, в них переменные могут быть целого, вещественного, символьного, строкового типа.
- Для того, чтобы создать файл, необходимо:
- Описать файловую переменную.
- Связать ее с физическим файлом.
- Открыть файл для записи.
- Внести необходимую информацию в файл (пользуясь циклом FOR).
- Обязательно закрыть файл.
- Для считывания информации из файла нужно:
- Описать файловую переменную.
- Связать ее с физическим файлом.
- Открыть файл для чтения.
- Считать необходимую информацию (проверить, достигнут ли конец файла).
- Закрыть файл.
В Delphi не раз получается, что открывается сначала один файл, затем другой и в итоге компилятор выдает ошибку. Почему? Дело в том, что после считывания информации из первого файла программист забывает его закрыть. Поэтому, чтобы в будущем не возникало никаких ошибок, давайте будем всегда его закрывать, независимо от того открыт он для чтения или же для записи.
Полный код программы, показывающий запись N действительных чисел в файл:
Полный код программы, иллюстрирующий вывод на экран содержимое файла:
Интересно, что если открыть этот полученный файл вещественного типа с помощью «Блокнот», то будет что-то вроде этого:
ѓ ѓ @Ѓ ‚ „ „ „ ‚ @ѓ ѓ `
А вот если тип файла будет текстовым (FILE OF TEXT), то данные легко отобразятся в «Блокноте». Напомним, что при вещественном типе файла, значения можно вводить только с помощью чисел (в том числе и дробных), а вот если тип файла текстовый – вводить можно любой символ, который есть на клавиатуре.
Попробуйте поэкспериментировать с различными типами файла (real, integer, byte, text, word, longint, single, double, extended).
Задания:
- Увеличить число, находящееся в текстовом файле input.txt, в два раза. Результат записать в файл output.txt.
- В единственной строке файла input.txt записано через пробел два числа в следующем виде: 2 3. Записать в файл output.txt сумму этих чисел.
- Дан текстовый файл input.txt, состоящий из двух строк. Первая строка хранит одно число - количество элементов массива (n:integer), вторая - элементы массива. Разработать программу, которая наименьший элемент массива поместит на первое место, наименьший из оставшихся - на последнее, следующий по величине - на второе место, следующий - на предпоследнее и так далее - до середины массива. Результат записать через пробел в одну строку выходного файла output.txt. Пример:
INPUT.TXT OUTPUT.TXT 5 1 2 3 4 5 1 3 5 4 2
<< Предыдущая статья Следующая статья >>
Опубликовано: 2012-04-06 19:16:47