Здравствуйте, в этой статье хотел бы поговорить о работе с типизированными файлами, я уже публиковал статьи, где применял их, ну так, чтобы для более понять темы по созданию тестов, по сохранению и считыванию данных TStringGrid. Давайте сначала подумаю, а что такое вообще типизированные файлы, да правильно — это те файлы, которые имеют определенный тип и мы изначально знаем их структуру. Для работы с типизированными файлами применяются следующие функции и процедуры
- AssignFile(F,’test.dat’) — связывает файловую переменную с именем файла, параметры передаваемые — файловая переменная и путь к файлу
- Rewrite(F) — создает файл, параметры — файловая переменная, необязательные — режим создания
- Reset(F) — открывает файл, то есть подрузумевается в том, что мы как бы ставим файл в режим открытия, чтения (в общем если файл имеется на диске или еще каком-то носителе и нам из него необходимо прочитать информацию, то тут без этой функции не обойтись).
- Seek (F,n) — устанавливает указатель в файле на нужную компоненту, параметры — файловая переменная, номер компоненты на которую необходимо переместиться.
- Write(F,Buf) — записывает компоненту в файл, параметры — файловая переменная, запись с данными
- Read(F,Buf) — считывает компоненту из файла, на которой стоит указатель (по умолчанию на первой), параметры — файловая переменная и запись, в которую необходимо считать данные
- EOF(F) — определяет достигнут ли конец файла (указатель конца файла), параметры — файловая переменная
- Truncate(F) — удаляет компоненту в файле, параметры — файловая переменная, перед этим необходимо установить указатель на компоненту, которую необходимо удалить
- FileSize(F) — определяет количество компонентов в файле, параметры — файловая переменная, возвращает целочисленный тип
- CloseFile(F) — закрывает файл, параметры — файловая переменная. Это как бы необязательная функция, но просто принято так, если открыл, то закрой его за собой.
Вот основные функции по работе с типизированными файлами. Многие из низ подходят для работы с текстовыми файлами. С нетипизированными файлами мы познакомимся в другой статье.
На последок хотел бы показать как организовать запись в типизированный файл
type
TStudent=record
name:string[255];
oz:integer;
end;
var
Student:TStudent;
File:File of TStudent;
begin
AssignFile(F,'test.dat');
Rewrite(F);
Student.name:='Andrey';
Student.oz:=10;
Seek(F,0);
Write(F,Student);
CloseFile(F);
end;
Считывание точно также, только не заполняем нашу структуру, а вместо Write используем Read.
Хочу заметить, что сейчас действительно очень тяжело найти качественную обувь по низким ценам. Я нашел такое место — это торговый комплекс Центр Города. Там огромный выбор обуви и Вы наверняка найдете себе подходящую. Данные торговый центр находится во многих городах, подробнее Вы сможете узнать на сайте http://centergoroda.com |
Спасибо! То что искал
Скажите пожалуйста, а как мне вытащить из типизированного файла записей конкретную запись, но не по номеру ее, а по названию какого-либо поля?
2adiodas, только если проходиться циклом и искать нужную
Как в файловом потоке (TFileStream), в котором находятся несколько файлов, поставить указатель на последний файл? (не в конец файла)
2Ghost del vonte
Вам необходимо сохранять заголовки файла и устанавливать c помощью Seek размер этого файла (FileSize)
Дело в том, что в данном потоке, в самом конце я хотел разместить файл (TWriter), в котором и описаны имена, размеры, позиции всех файлов, которые находятся в потоке, мне надо при загрузке этого «архива» поставить указатель на последний этот «информационный» файл, чтобы можно было работать с этим архивом…
В Truncate(F,n) нет параметра n
Да, Вы правы, не внимательный я, поправил
Сделал все, как в примере, при попытке записи в файл вылетает ошибка, через IORusult поймал — invalid file handle. Где копать?
Исходник скачивали? возможно у Вас в файл стоит запрет на запись
в строке
File:File of TStudent;
наверное Вы имели ввиду это:
F : File of TStudent;
да, точно, спасибо за поправку
() : Ожидалось ‘.’
У меня вот такая ошибка в ABC Pascal
>8. Truncate(F) — удаляет компоненту в файле, параметры — файловая переменная, перед этим необходимо установить указатель на компоненту, которую необходимо удалить
Truncate удаляет не только ту запись на котором сейчас установлен указатель, но и все последующие вплоть до конца файла. Другими словами Truncate уменьшает размер файла до текущей позиции. Например если в файле было 100 записей и текущая позиция указывает на десятую запись, то после Truncate размер файла сократится до 10 записей — останутся записи с номерами от 0 до 9, а записи начиная с 10-й будут уничтожены.