Удалить элемент из файла паскаль
Одной из проблем при копировании данных из типизированного файла в массив является невозможность корректного выделения памяти под массив. При выделении памяти заранее неизвестно, сколько элементов находится в файле. Для решения этой задачи существует функция filesize(f) ( f — файловая переменная), которая возвращает значение типа longint — число реальных компонентов в открытом файле, связанном с файловой переменной f . Для пустого файла функция возвращает число 0.
Рассмотрим использование функции filesize при переписывании чисел из файла вещественных чисел в массив.
ЗАДАЧА 7.3. Переписать содержимое файла вещественных чисел в массив.7.2.9 Функция filepos
Функция filepos(f) возвращает значение типа longint — текущую позицию в открытом файле, связанном с файловой переменной f . Сразу после открытия файла значение filepos(f) равно 0. После прочтения последнего компонента из файла значение filepos(f) совпадает со значением filesize(f) . Достижение конца файла можно проверить с помощью условия:
7.2.10 Процедура seek
Процедура seek(f,n) устанавливает указатель в открытом файле, связанном с файловой переменной f , на компонент с номером n (нумерация компонентов идет от 0). Затем значение компонента может быть считано.
7.2.11 Процедура truncate
Процедура truncate(f) , где f — имя файловой переменной, отсекает часть открытого файла, начиная с текущего компонента, и подтягивает на его место конец файла.
Использование процедур seek и truncate рассмотрим на примере решения следующих двух несложных задач по обработке файлов.
ЗАДАЧА 7.4. В файле /home/evgeniy/pascal/6/pr1/abc.dat вещественных чисел поменять максимальный и минимальный элементы.Рассмотрим два варианта решения этой задачи.
В первом, консольном варианте программы после считывания компонентов файла в массив происходит поиск минимального и максимального элементов массива и их индексов. Затем максимальное и минимальное значения перезаписываются в файл.
Вторую версию программы напишем как полноценное приложение. Использовать массив в программе не будем. Будет организован единственный цикл, в котором очередное значение считывается в переменную a и осуществляется поиск минимального и максимального элементов среди компонентов файла и их индексов. Затем происходит перезапись в файл максимального и минимального значений.
Разработку программы начнём с создания шаблона графического приложения (Проект — Создать Проект — Приложение).
На форме расположим следующие компоненты:
- Две метки Label1 и Label2 для подписи.
- Edit1 — текстовое поле редактирования, в котором будем хранить содержимое исходного файла.
- Edit2 — текстовое поле редактирования, в котором будет храниться файл после преобразования.
- OpenDialog1 — компонент для выбора имени обрабатываемого файла.
- Button1 — кнопка для запуска программы.
- Button2 — кнопка для завершения программы.
Расположим компоненты на форме примерно так, показано на рис. 7.7.
Основные свойства компонентов будем устанавливать программно при создании формы. Поэтому подпрограмма FormCreate будет такой:
увеличить изображение
Рис. 7.8. Окно программы решения задачи 7.4 при запуске
Авторы надеются, что читателям, дочитавшим книгу до этого момента, текст процедуры TForm1.FormCreate понятен без пояснений.
При запуске программы окно формы будет иметь вид, представленный на рис. 7.8.
Основные действия программа будет осуществлять при щелчке по кнопке Преобразовать файл, текст соответствующей подпрограммы с комментариями приведён ниже.
При щелчке по кнопке Выход программа должна завершать свою работу. Поэтому текст обработчика щелчка по кнопке будет очень простым.
При щелчке по кнопке Преобразовать файл появляется окно выбора файла, подобное представленному на рис. 7.5. После выбора файла в нём происходит обмен максимального и минимального элементов и вывод содержимого файла до и после преобразования (см. рис. 7.9). При щелчке по кнопке Выход работа программы завершается.
увеличить изображение
Рис. 7.9. Окно программы решения задачи 7.4 после преобразования файла
При решении задачи 7.4 была использована процедура seek , с помощью которой стало возможным изменение данных в файле непосредственно на диске, без считывания в массив.
ЗАДАЧА 7.5. Задан файл вещественных чисел abc.dat . Удалить из него максимальный и минимальный элементы.Рассмотрим две программы, решающие эту задачу. Программы будем создавать как консольные приложения в Lazarus. Алгоритм первой состоит в следующем: считываем компоненты файла в массив, в котором находим максимальный и минимальный элементы и их номера. Открываем файл для записи и вносим в него все элементы, за исключением максимального и минимального.
Вторая программа работает следующим образом. Находим максимальный и минимальный элементы и их номера среди компонентов файла. Если nmin > nmax , то меняем содержимое переменных nmin и nmax . Далее элементы, лежащие между минимальным и максимальным (формально между элементами с номерами nmin и nmax ), сдвигаем на один порядок влево. Тем самым мы убираем элемент с номером nmin . После этого все компоненты, лежащие после элемента с номером nmax , сдвинем на два порядка влево. Этим мы сотрём максимальный элемент. Затем два последних компонента в файле необходимо удалить.
В результате работы программы из файла вещественных чисел удалено наибольшее и наименьшее число.
Кроме типизированных файлов широкое применение при обработке числовых данных получили бестиповые файлы.
В язык Паскаль выделяются данные файлового типа, которые служат для работы с информацией, расположенной на внешних устройствах. Эта информация формируется во внешней памяти компьютера, образуя некоторую область, называемую файлом. Файлы имеют имя и представляют собой совокупность однотипных элементов. Обычно они применяются, в случаях большого объема данных, долгосрочного хранения, либо необходимости предоставления доступа нескольким приложениям к одной и той же информации.
Файлы принято разделять на физические и логические. Физические файлы имеют имя, и располагаются на съемном носителе, а логические это те переменные файлового типа, которые их представляют в программе.
В Паскале различают следующие три вида файлов (в скобках описаны ключевые слова для инициализации файловой переменной):
- текстовые файлы ( text );
- типизированные ( file of <тип> );
- бестиповые ( file ).
1 Общие операции по работе с файлами
Немного позже мы разберемся с каждым из них. А сейчас рассмотрим основные операции для работы с файлами.
Создание файла
Assign(<имя файловой переменной>, <имя файла>)
Процедура Assign связывает переменную файлового типа с физическим файлом. Например, установить соответствие между переменной Fil и текстовым файлом lot , расположенном на диске D , можно так:
Режим чтения
Reset(<имя файловой переменной>)
Процедура Reset открывает файл в режиме чтения, после чего оператором Read(<файловая переменная>, <считываемый элемент>) можно осуществить последовательное считывание элементов в программу.
Конец файла
ЕOF(<имя файловой переменной>)
Количество элементов в файле заранее не определяется, но часто необходимо знать о моменте достижения конца файла. Для этого в Паскале существует логическая функция EOF , которая проверяет достигнут ли конец, и если это так, то принимает значение True , иначе – False . Осуществляется проверка, как правило, в цикле, в качестве условного выражения выступает функция EOF .
Режим записи
Rewrite(<имя файловой переменной>)
Открыв файл в режиме записи, можно поэлементно записать в него информацию, воспользовавшись процедурой Write(<файловая переменная>, <элемент>) .
Закрытие файла
Процедура Close закрывает открытый файл, а также освобождает файловую переменную, указанную в качестве параметра.
Удаление файла
Erase(<имя файловой переменной>)
При помощи процедуры Erase , можно удалить с внешнего носителя, заранее закрытый файл.
Изменение имени файла
Rеnаmе(<имя файловой переменной>, ‘<новое имя файла>’)
Rеnаmе переименовывает физический файл, который перед этим следует закрыть процедурой Close .
Смещение указателя файла
Sееk(<имя файловой переменной>, <номер элемента>)
Процедура Sееk устанавливает позицию указателя в файле на необходимый элемент (нумерация элементов начинается с нуля).
Определение положения указателя
FilePos(<имя файловой переменной>)
Функция FilePos принимает значение порядкового номера элемента, над которым в момент вызова находиться указатель.
Определение количества элементов
FileSize(<имя файловой переменной>)
Функция FileSize определяет количество всех имеющихся в файле элементов.
2 Текстовые файлы
Текстовые файлы могут состоять из элементов символьного ( char ) и строкового ( string ) типа данных. Ключевое слово Text указывает, что файловая переменная создается для работы именно с текстовым файлом:
Var <идентификатор>: Text;
Структура текстового файла представляет собой последовательность строк, которые в свою очередь состоят из символов. Любая строка оканчивается признаком «конца строки», а сам файл признаком «конца файла». Для определения конца файла в Паскаль есть функция EOF , а для конца строки – EOLn :
EOLn(<имя файловой переменной>)
В случае достижения конца строки она (функция EOLn ) возвращает значение True , в противном случае False .
Рассмотрим работу с текстовым файлом, на примере программы.
Место создания файла "file.txt" не было указано, поэтому он создаться в папке по умолчанию для вашей среды программирования. Для текстовых файлов в Паскале определены следующие процедуры и функции:
Append(<имя файловой переменной>)
Процедура Append открывает существующий файл в режиме дозаписи. После чего в его конец можно добавить какую либо информацию.
SeekEOLn(<имя файловой переменной>)
Если до конца строки остались пробелы/знаки табуляции, то функция SeekEOLn возвращает значение True , иначе False .
SeekEOF(<имя файловой переменной>)
Если до конца файла остались лишь строки с пробелами/знаками табуляции, то функция SeekEOF возвращает значение True , иначе False .
3 Типизированные файлы
Файл, определенный стандартным или пользовательским типом данных, называется типизированным. Общая форма объявления типизированных файлов имеет вид:
Var <имя файла>: File of <тип компонент>;
Здесь тип компонент может быть любым типом данных, определенных в Pascal, но только не файловым. Для работы с типизированными файлами используются уже знакомые нам процедуры и функции: Write, Read, Seek, Filesize, Filepos , а также процедура Truncate :
Truncate(<имя файловой переменной>)
Она удаляет все компоненты в файле, начиная с того над которым находиться указатель.
Одной из главных особенностей типизированного файла является возможность прямого обращения к его отдельным компонентам. Это достигается за счет, того что заранее известен тип компонент файла. Рассмотрим два примера кода, в первом из которых обращение к элементам файла происходит последовательно, а во втором прямо.
Пример: вычислить среднее арифметическое элементов файла.
Пример 2: поменять строки в файле местами.
Таким образом, напрашивается вывод, что типизированные файлы несколько функциональней в обработке, чем текстовые. Далее разберем последний пункт данной статьи, а именно третий вид файлов — бестиповые файлы.
4 Бестиповые (нетипизированные) файлы
Бестиповые файлы предназначены для записи участков памяти компьютера на внешний носитель и считывания их в память. В отличие от типизированных файлов, нам не нужно знать информация какого типа хранится в них. А все потому, что данные из файлов, не имеющих типа, считываются в виде байт, после чего они «подстраиваются» под переменную, в которую происходит считывание.
Общая форма записи нетипизированных файлов
Var <идентификатор>: File;
отличается от типизированных отсутствием части of <тип данных> . Кроме того, немного изменяется принцип действия процедур Reset и Rewrite . К ним прибавляется второй параметр типа Word:
Здесь «значение» — это новый размер буфера, который по умолчанию равен 128 байтам. В качестве минимального значения можно указать 1 байт, а максимального — 64 кбайт (число в байтах).
Также в бестиповых файлах для записи и чтения информации используются не стандартные процедуры Read и Write , а две новые: BlokRead и BlockWrite . Рассмотрим каждую из них.
Процедура BlockRead
Данная процедура считывает из файла заданное число записей, которые помещаются в память.
Общая форма записи:
BlockRead(<имя файловой переменной>, <x>, <количество байт>, <y>);
x, y – обычные переменные, в первую помещается прочитанные данные, во вторую – количество считанных байт. В случае удачи y (y – необязательный параметр) будет иметь тоже значение, что и третий параметр.
Процедура BlockWrite
Для записи информации в бестиповый файл предназначена процедура BlockWrite :
BlockWrite(<имя файловой переменной>, <x>, <количество байт>, <y>);
Параметры процедуры BlockWrite точно такие же, как и у BlockRead . Да и принцип их одинаков, за исключением того, что первая записывает данные в файл, а вторая считывает их из него.
В следующей программе данные сначала записываются в нетипизированный файл, а затем выводятся из него посредством рассмотренных нами операций.
Возможно, что ваша среда программирования не поддерживает работу с файлами, не имеющими типа. Поэтому прежде чем начать искать ошибку в коде, стоит узнать про данную функцию.
Так уж случилось что сайт простаивает, а в свое время я занимался им активно, идея просто отличная и забросить ее не в коем случае нельзя, поэтому мной было принято решение о продаже этого сайта.
Что получает в итоге покупатель:
- Весь контент сайта(все содержимое хостинга)
- Полные права на доменное имя сайта(сделаем трансфер)
- Копирайт сайта на большом количестве сторонних ресурсов так как сайту уже более 4-х лет
- Готовый движок форума и все исходные тексты системы управления сайтом
- Все исходные тексты ПО которое опубликовано на сайте
- Все почтовые ящики доменного имени
- Все домены третьего уровня
Дополнительную информацию о статистике посещения, клиентах, вы можете узнать написав на почту [email protected]
Добавил admin | Категория Pascal за 12 уроков, перевод | 06 Февраля 2014
В этом уроке мы с вами рассмотрим:
- Чтение из файла
- Создание и запись в файл
- Добавление данных в существующий файл
- Удаление файлов
- Использование директив ,
- Создание и удаление вложенных каталогов
- Описание функции FileSize()
Введение
Файл содержит данные которые в свою очередь хранятся на жестком диске подключенному к компьютеру. Операционная система предоставляет инструменты для работы с файлами(файловой системой). Текстовые файлы как правило могут содержать текст и графическую информацию, комбинированную. Для работы с текстовыми файлами используются текстовые процессоры которые имеются в операционной системе. Текстовые файлы сохраняются на жестком диске компьютера с расшитением *.TXT или *.DOC, *.DOCX. файлы с расширением *.TXT создаются с помощью стандартного текстового процессора Notepad. Но будем помнить что некоторые программы позволяют нам сохранять так сказать отформатированный текст, или текст с картинками, для таких целей NOTEPAD естественно не подходит. Для такого текста используются специальные пакеты программ, такие например как Microsoft Word, Open Office и другие. Такие программы используют несколько иной подход для создания файла нежели NOTEPAD. Таким образом файл созданный в Microsoft Word невозможно правильно открыть в NOTEPAD, а вот файл *.TXT легко открывается в текстовом редакторе Word. Программы которые могут читать файлы расширения *.Ххх называют программами просмоторщиками файлов.
Чтение из файла
Прочитать информацию из файла на языке Паскаль не составит большого труда. Обратите внимание что в Паскале нет никаких зарезервированных слов которые используются для чтения или записи информации в файл. Для этих целей используются уже знакомые нам readln() and writeln(). И так пример, как читать информацию из файла
И так что мы с вами написали. У нас появилась новая переменная типа Text. Такая переменная применяется когда вы хотите получить доступ из своей программы к определенному текстовому файлу. Переменная FileName используется для ввода пользователем имени файла(readln(FileName);). Связь переменной UserFile с файлом, путь к которому указан в переменной FileName осуществляется с помощью функции Assign полный текст будет такой Assign(UserFile, FileName + '.txt'); после этого происходит чтение из файла в цикле Repeat который завершается только после того как достигнут конец файла Eof(UserFile). Чтение из файла производиться функцией Readln(UserFile,TFile); где указывается файл из которого нужно считать строку и переменная в которую мы считаем эту строку. Процеду Writeln(TFile); выводит эту строку к нам на экран.
Создание файла, добавление данных
Давайте сразу посмотрим пример создания и добавления информации в файл.
В приведенном выше примере мы создаем файл с названием 'Textfile' на диске C:\. Создаться файл функцией Rewrite(UserFile); после чего в файл записываются строки Writeln(UserFile,'PASCAL PROGRAMMING');… Writeln(введите свою строку в ваш файл:'); тут первым параметром является файл в который записывается информация и вторым информация которую нужно добавить в файл. После чего мы считываем пользовательскую строку Readln(Txt);, добавляем пустую строку в наш файл Writeln(UserFile,'');потом говорим что сейчас будет пользовательская статья Writeln(UserFile,'The user entered this text:');, записываем пользовательскую статью Writeln(UserFile,Txt); И закрываем файл Close(UserFile);. Помните, файл всегда нужно закрывать, после окончания работы и открывать перед началом работы.
Добавление данных в существующий файл
Для того что бы добавить данные в существующий файл, его нужно открыть на чтение, добавить нужную информацию и закрыть, но не перезаписывать. Некоторые начинающие программисты на самом деле плохо понимают как не перезаписать файл с данными которые они хотели ввести, это общая проблема:
Выполните программу несколько раз, откройте файл 'C:\ADDTEXT.TXT' и посмотрите что в нем. Вы видите только одно предложение? ReWrite(UFile); функция которая открывает файл на перезапись.
Понимаете да что нам не подходит открытие файла с помощью ReWrite(UFile);, нужна какая то новая функция, и она есть это append(f) где F это переменная типа текст, ну мы с вами проходили уже это в этом же уроке. Теперь наша программа будет выглядеть так:
Выполните программу несколько раз для того что бы увидеть изменения.
Удаление файлов
В Паскале для того что бы удалить файл используется зарезервированное слово Erase(f) где F может быть путем к файлу('C:\ADDTEXT.TXT') или самим файлом, переменной типа текст. Важным замечанием будет то что файл удаляется совсем, то есть в корзине своего компьютера вы его не найдете.
В отличии от других функций для работы с файлами функция Erase(f) не открывает файл для его удаления, так что вам не нужно закрывать файл после его удаления.
Пример программы:
Если наш файл не найден функция IOResult вернет значение 0 а если файл не найдет значит функция вернет отличное от нуля значение.
ВАЖНО: если файл успешно найден, файл откроется и вы должны поработав с ним закрыть его, как показано в примерах выше. А вот если он не найден то здравый смысл подсказывает что он не может быть открыт, соответственно и закрывать и работать нам не с чем. Внимательно посмотрите пример еще раз, если у вас есть какие то вопросы, пожалуйста задавайте их в комментариях. Запустите программу несколько раз, с существующими и не существующими файлами, посмотрите на результат работы.
Директивы компилятора рекомендуется использовать со всеми функциями для открытия файлов 'rewrite()', 'append()', 'erase()', а так же 'FSearch()'. Обязательно попрактикуйте этот урок, повторюсь, в случае вопросов обязательно оставляйте их в коментариях. Создание и удаление вложенных каталогов
В языке Pascal есть функции для работы с каталогами. С помощью их можно создавать или удалять каталоги с жестких дисков компьютера. Что бы создать директорию в Паскале используется функция 'createdir(c)' где С имеет тип PChar. PChar является переменной указателем, которая содержит адрес динамической переменной заданного типа. Каталог создается следующим образом:
NewDir := FSearch('C:\Pascal Programming',GetEnv('')); if NewDir = '' then CreateDir('C:\Pascal Programming');
давайте теперь пример, сразу в примере разберем функцию FSearch:
С термином «файл» вам уже приходилось встречаться. Прежде всего, это понятие обычно связывают с информацией на устройствах внешней памяти. В Паскале понятии файла употребляется в двух смыслах:
- как поименованная информация на внешнем устройстве (внешний файл);
- как переменная файлового типа в Паскаль-программе (внутренний файл).
В программе между этими объектами устанавливается связь. Вследствие этого все, что происходит в процессе выполнения программы с внутренним файлом, дублируется во внешнем файле. С элементами файла можно выполнять только две операции: читать из файла и записывать в файл.
Файловый тип переменной – это структурированный тип, представляющий собой совокупность однотипных элементов, количество которых заранее (до исполнения программы) не определено.
Для работы с файлом при описании переменных необходимо определить переменную файлового типа, которая будет считаться «представителем» этого файла в данной программе. Такая переменная называется также указателем. Структура описания файловой переменной:
В качестве базового типа можно использовать любой тип, за исключением типа File.
Файл можно представить как последовательную цепочку элементов (эл.), пронумерованных от 0, заканчивающуюся специальным кодом, называемым маркером конца (<м.к.>, <eof>):
Количество элементов, хранящихся в данный момент в файле, называется его текущей длиной. Существует специальная ячейка памяти, которая хранит адрес элемента файла, предназначенного для текущей обработки (записи или чтения). Этот адрес называется указателем или окном файла. Указатель всегда указывает на конкретный элемент файла, поэтому существует понятие текущий указатель.
Обычно все действия с файлами производятся поэлементно, причем с тем элементом файла, на который указывает текущий указатель. При записи или считывании указатель перемещается к следующему элементу.
Поскольку число элементов файла не задается, то последним элементом файла всегда записывается символ конца файла (eof). В языке Паскаль существует булевская функция eof(<файловая переменная>), результат которой – true, если указатель указывает на конец файла.
Основные операции с файлами
Эти операции необходимы на начальном этапе работы с файлами – для связывания файловой переменной с конкретным файлом, указания того, какие действия будут с ним проводиться и окончания работы с файлом. К ним относят:
- assign (f,FileName) – связывает файловую переменную f с конкретным файлом с именем FileName. Данную процедуру необходимо использовать до начала работы с файлом. FileName – выражение строкового типа вида:
Диск: \ имя каталога \ имя подкаталога \ … \ имя файла
Если имя диска и имя каталога не указывать, то берутся текущий диск и текущий каталог.
- reset (f) – открывает файл f для чтения, т.е. указатель устанавливается на первый элемент файла. Предполагается, что открываемый файл уже существует, в противном случае возникает ошибка.
- rewrite (f) – открывает файл f для записи (указатель так же, как и в предыдущем случае, устанавливается на первый элемент файла). Допускается, что файл не существует, тогда процедура создает файл с заданным именем. Если же такой файл существует, процедура удаляет из него всю информацию. В обоих случаях в результате вызова данной процедуры файловая переменная указывает на нулевой элемент файла (т.е. файл пуст).
- close (f) – закрывает файл f для, очищает внутренний буфер, образованный при открытии файла. Теперь указатель f можно связать с другим файлом.
- Операции ввода-вывода
Это две операции:
- read (f,x1,x2, …) – считывает в переменные x1,x2, … по одному элементу из файла f, начиная с той позиции, на которую установлен указатель. Операция чтения осуществляется следующим образом: значение на которое указывает текущий указатель файла, присваивается переменной x1, указатель перемещается на следующую позицию, то же самое выполняется для переменной x2, и т.д. Данная процедура выполнима только в том случае, если не достигнут конец файла (eof(f)=false).
- write (f,x1,x2, …) – записывает в файл f значения переменных x1,x2, … , начиная с той позиции, на которую указывает файловая переменная. После записи в файл нового элемента, указатель перемещается на следующую позицию. Данная функция выполнима только в том случае, когда достигнут конец файла (eof(f) =true).
- Операции перемещения по файлу
В эту группу входят:
Эта группа предназначена для действий с каталогами и именами. Некоторые из операций:
Примеры работы с файлами*
В качестве примеров рассмотрим три наиболее часто встречающихся действия с файлами:
Для чтения файла необходимо выполнить следующий алгоритм:
- связать файл с файловой переменной;
- открыть файл для чтения;
- ввести данные файла в память;
- закрыть файл.
Пример программы, реализующей этот алгоритм:
После того, как мы связали файл с файловой переменной с помощью оператора Assign(F,FileName), открываем файл с помощью оператора Reset(F). В результате файловая переменная f указывает на первый элемент файла:
С помощью оператора Read(F, Ch) в переменную Ch считывается значение, которое находится в том месте файла, на которое указывает переменная F, т.е. C. Затем указатель перемещается на следующий элемент файла:
После этого значение переменной Ch выводится на экран с помощью оператора Write(Ch). Затем аналогичным образом считываются из файла значения 2-го, 3-го и т.д. элементов до тех пор, пока файловая переменная не будет указывать на конец файла.
Алгоритм записи данных в файл можно определить следующим образом:
- связать файл с файловой переменной;
- открыть файл для записи;
- записать данные из программы в файл;
- закрыть файл для записи.
Пример программы, реализующей этот алгоритм и записывающей в файл числа от 1 до 30:
При открытии файла с помощью процедуры Rewrite(F) файл выглядит следующим образом:
Так как файловая переменная указывает на конец файла, мы можем записать в него любую информацию с помощью процедуры Write, например,
Необходимо отметить, что в отличии от вывода на экран, при записи информации в файл вторым аргументом оператора Write являются не выражения, а переменные. Следующие записи будут неверны: Write(F, 1), Write(F, x+1).
Пусть необходимо к уже существующему файлу добавить ряд элементов. Для этого необходимо выполнить следующие действия:
- открыть уже существующий файл с помощью процедуры reset (f);
- установить указатель файла на последний элемент с помощью процедуры seek следующим образом: seek(f,filesize(f));
- записать дополнительные данные;
- закрыть файл.
Пример: к уже имеющемуся файлу, в который занесены числа от 1 до 30, дописать числа 40, 50, 60, 70, 80.
При открытии файла с помощью процедуры Reset вся информация в файле остается без изменения, курсор устанавливается на первый элемент файла:
Затем с помощью операции seek(f, filesize(f)) перемещаем файловую переменную на последний элемент файла:
Так как файловая переменная указывает на конец файла, мы можем дописать в файл любую информацию, например, с помощью оператора Write(f, 31);
Текстовые файлы
Отдельным типом файлов являются текстовые файлы. Особенность этих файлов заключается в том, что их содержимое рассматривается как последовательность строк переменной длины, разделенных специальными символами, которые называются «конец строки». Символ конца строки при просмотре файла не виден, так же как и символ конца файла. В программе файловая переменная текстового типа описывается следующим образом:
Var < имя файловой переменной >: text;
Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт.
Главная особенность текстовых файлов заключается в том, что можно считывать из него и записывать в него элементы типа char, integer, real, string, boolean. Если информация несимвольная, то в процессе чтения или записи происходит ее преобразование из символьной формы во внутреннюю и обратно.
- Процедуры и функции для работы с текстовыми файлами
Для работы с текстовыми файлами можно использовать все процедуры и функции, используемые при работе с файлами любых типов, за исключением процедуры seek, функций filepos, filesize. Дело в том, что заранее неизвестно, элементы какого типа находятся в файле.
Для работы с текстовыми файлами определены дополнительные операции.
Функция:
eoln (f) – логическая функция, возвращающая логическое значение true, если достигнут конец строки, и false в противном случае.
Читайте также: