Здравствуйте, в этой статье хотел бы поговорить о работе с типизированными файлами, я уже публиковал статьи, где применял их, ну так, чтобы для более понять темы по созданию тестов, по сохранению и считыванию данных TStringGrid. Давайте сначала подумаю, а что такое вообще типизированные файлы, да правильно — это те файлы, которые имеют определенный тип и мы изначально знаем их структуру. Для работы с типизированными файлами применяются следующие функции и процедуры

  1. AssignFile(F,’test.dat’) — связывает файловую переменную с именем файла, параметры передаваемые — файловая переменная и путь к файлу
  2. Rewrite(F) — создает файл, параметры — файловая переменная, необязательные — режим создания
  3. Reset(F) — открывает файл, то есть подрузумевается в том, что мы как бы ставим файл в режим открытия, чтения (в общем если файл имеется на диске или еще каком-то носителе и нам из него необходимо прочитать информацию, то тут без этой функции не обойтись).
  4. Seek (F,n) — устанавливает указатель в файле на нужную компоненту, параметры — файловая переменная, номер компоненты на которую необходимо переместиться.
  5. Write(F,Buf) — записывает компоненту в файл, параметры — файловая переменная, запись с данными
  6. Read(F,Buf) — считывает компоненту из файла, на которой стоит указатель (по умолчанию на первой), параметры — файловая переменная и запись, в которую необходимо считать данные
  7. EOF(F) — определяет достигнут ли конец файла (указатель конца файла), параметры — файловая переменная
  8. Truncate(F) — удаляет компоненту в файле, параметры — файловая переменная, перед этим необходимо установить указатель на компоненту,  которую необходимо удалить
  9. FileSize(F) — определяет количество компонентов в файле, параметры — файловая переменная, возвращает целочисленный тип
  10. 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

Метки: ,




К записи “Работа с типизированными файлами в Delphi” оставлено комментариев: 15.

  1. adiodas:

    Спасибо! То что искал

  2. adiodas:

    Скажите пожалуйста, а как мне вытащить из типизированного файла записей конкретную запись, но не по номеру ее, а по названию какого-либо поля?

  3. Andrey53:

    2adiodas, только если проходиться циклом и искать нужную

  4. Ghost del vonte:

    Как в файловом потоке (TFileStream), в котором находятся несколько файлов, поставить указатель на последний файл? (не в конец файла)

  5. Andrey53:

    2Ghost del vonte
    Вам необходимо сохранять заголовки файла и устанавливать c помощью Seek размер этого файла (FileSize)

    • Ghost del vonte:

      Дело в том, что в данном потоке, в самом конце я хотел разместить файл (TWriter), в котором и описаны имена, размеры, позиции всех файлов, которые находятся в потоке, мне надо при загрузке этого «архива» поставить указатель на последний этот «информационный» файл, чтобы можно было работать с этим архивом…

  6. nikro:

    В Truncate(F,n) нет параметра n

  7. DeadUser:

    Сделал все, как в примере, при попытке записи в файл вылетает ошибка, через IORusult поймал — invalid file handle. Где копать?

  8. bcook:

    в строке
    File:File of TStudent;

    наверное Вы имели ввиду это:
    F : File of TStudent;

  9. Александр:

    () : Ожидалось ‘.’
    У меня вот такая ошибка в ABC Pascal

  10. poli-smen:

    >8. Truncate(F) — удаляет компоненту в файле, параметры — файловая переменная, перед этим необходимо установить указатель на компоненту, которую необходимо удалить
    Truncate удаляет не только ту запись на котором сейчас установлен указатель, но и все последующие вплоть до конца файла. Другими словами Truncate уменьшает размер файла до текущей позиции. Например если в файле было 100 записей и текущая позиция указывает на десятую запись, то после Truncate размер файла сократится до 10 записей — останутся записи с номерами от 0 до 9, а записи начиная с 10-й будут уничтожены.

  11. bhairava:

    Здравствуйте! Подскажите, пожалуйста, возможно ли распарсить файл GeoIp.dat? Возможно сталкивались с ним, вот тут его можно скачать http://geolite.maxmind.com/dow.....ity.dat.gz

    Может напроситься вопрос для чего его парсить, если они дают базу и в csv, но тут тонкий момент, их безплатная база урезанная жутко, многие поселки не определяет, а платная база все прекрасно определяет, но стоит 370 зеленых, платить за это такую сумму просто нет никакого желания, потому что на руках уже есть эта база скачанная на торрентах, но 2012 года, а в ней все российские города транслитом, что неправильно для русскоязычной аудитории. Вот поэтому и хочу распарсить этот файл и перегнать его, допустим, в мускл, а там уже перевести всё по словарю и не так уж принципиально обратно в dat загонять обработанный результат, вполне сгодится база мускла.Да, муск — потому что для веб, но не суть. Буду очень признателен за любую наводку в правильное русло. Благодарю.

Оставить комментарий

Вы можете использовать следующие теги:

*