ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 3. Завет мужчины с женщиной 
Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д. Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу. Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар. | Задание 2 – изучить принципы работы с файлами в системе Delphi. Получить представление об основных операторах реализующих работу с файлами. Технология работы с файлами в системе Delphi требует определённого порядка действий. 1. Прежде всего файл должен быть открыт. Система следит, чтобы другие приложения не мешали работе с файлом. При этом определяется, в каком режиме открывается файл – для изменения или только считывания информации. После открытия файла в программу возвращается его идентификатор, который будет использоваться для указания на этот файл во всех процедурах обработки. 2. Начинается работа с файлом. Это могут быть запись, считывание, поиск и другие операции. 3. Файл закрывается. Теперь он опять доступен другим приложениям без ограничений. Закрытие файла гарантирует, что все внесённые изменения будут сохранены, так как для увеличения скорости работы изменения предварительно сохраняются в специальных буферах операционной системы. В Delphi реализовано несколько способов работы с файлами. Рассмотрим стандартный способ, связанный с использованием файловых переменных. Файловая переменная вводится для указания на файл. Делается это с помощью ключевого слова File: var F: File ; Описанная таким образом файловая переменная считается нетипизированной, и позволяет работать с файлами с неизвестной структурой. Данные считываются и записываются побайтно блоками, размер которых указывается при открытии файла, вплоть от 1 байт. Однако чаще используются файлы, состоящие из последовательности одинаковых записей. Для описания такого файла к предыдущему описанию добавляется указание типа записи: var F: File of <тип_записи>; В качестве типа могут использоваться базовые типы, или создаваться свои. Важно только, чтобы для типа был точно известен фиксированный размер в байтах, поэтому тип String в чистом виде применяться не может, а только в виде String[N]. Данные, считанные из файла или записываемые в файл, содержатся в обычной переменной, которая должна быть того же типа, что и файловая. Поэтому сначала в программе описывается нужный тип, а затем вводятся две переменные этого типа – файловая и обычная. Для текстовых файлов тип файловой переменной TextFile, а тип обычной переменной String. Для открытия файла нужно указать, где он расположен. Для этого файловая переменная должна быть ассоциирована с нужным файлом, который определяется его путем. Путь файла может быть абсолютным, с указанием диска и каталогов ('C:\Мои документы\Мои рисунки\FileName.ini'), или относительным, тогда он создаётся в папке с .exe файлом программы. Для задания относительного адреса достаточно указать имя файла с нужным расширением. Делается это оператором AssignFile : AssignFile(SaveF, 'C:\Мои документы\FileName.ini'); AssignFile(SaveF, 'FileName.ini'); Теперь файл должен быть открыт. Открытие файла оператором Rewrite приведёт к воссозданию файла заново, т.е. существующий файл будет без предупреждения уничтожен, и на его месте будет создан новый пустой файл заданного типа, готовый к записи данных. Если же файла не было, то он будет создан. Открытие файла оператором Reset откроет существующий файл к считыванию или записи данных, и его указатель будет установлен на начало файла: Rewrite(SaveF); Reset(SaveF); Каждый из этих операторов может иметь второй необязательный параметр, имеющий смысл для нетипизированных файлов, и указывающий длину записи нетипизированного файла в байтах: Rewrite(SaveF, 1); Reset(SaveF, 1); Чтение файла производится оператором Read : Read(SaveF, SaveV); Запись в файл производится оператором Write : Write(SaveF, SaveV); При этом чтение и запись производится с текущей позиции указателя, затем указатель устанавливается на следующую запись. Можно проверить, существует ли нужный файл, оператором FileExists : if FileExists('FileName.ini') then Read(SaveF, SaveV); Принудительно установить указатель на нужную запись можно оператором Seek(SaveF, N), где N - номер нужной записи, который, как и почти всё в программировании, отсчитывается от нуля: Seek(SaveF, 49); - установка указателя на 50-ю запись. При последовательном чтении из файла рано или поздно будет достигнут конец файла и при дальнейшем чтении произойдёт ошибка. Проверить, не достигнут ли конец файла, можно оператором EOF (аббревиатура End of File), который равен true, если прочитана последняя запись и указатель находится в конце файла: while (not EOF(SaveF)) do Read(SaveF, SaveV); Для текстовых файлов вместо Read и Write используются операторы Readln и Writeln, умеющие определять конец строки. Оператор Truncate(SaveF) позволяет отсечь (стереть) все записи файла, начиная от текущей позиции указателя, и до конца файла. В конце работы с файлом его необходимо закрыть. Это делается оператором CloseFile(SaveF) ; В качестве примера приведен код программы, который запоминает положение формы на экране. Создаём обработчик события Формы OnCreate со следующим содержимым (далее предполагается, что обучающийся уже имеет навык создания обработчиков событий). procedure TForm1.FormCreate(Sender: TObject) ; begin AssignFile(SaveF, 'Init.ini') ; if FileExists('Init.ini') then begin Reset(SaveF) ; Read(SaveF, SaveV) ; Form1.Left := SaveV.X ; Form1.Top := SaveV.Y ; Form1.Caption:=SaveV.Caption ; //Наши переменные дополнительно сохраняют заголовок Формы! end ; end ; Далее необходимо аналогично создать обработчик события OnClose: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction) ; begin Rewrite(SaveF) ; //Нет необходимости проверять наличие файла, создадим его заново! SaveV.X := Form1.Left ; SaveV.Y := Form1.Top ; SaveV.Caption := Form1.Caption ; Write(SaveF, SaveV) ; CloseFile(SaveF) ; end ; Выполнив вышеуказанные действия можно убедиться, что положение формы в момент закрытия будет полностью повторено при повторном открытии данного приложения. Данные хранятся в файле Init.ini расположенном в том же месте, где и исполняемый .exe файл. |