4755

Работа с файлами. Организация доступа к данным записанным в файл

Лекция

Информатика, кибернетика и программирование

Файлы Чтобы сохранять входные данные и результаты неограниченно долго и иметь возможность воспользоваться ими в любой момент используют файлы на магнитных носителях информации. По способу доступа к информации, записанной в файл, различают файлы прям...

Русский

2012-11-25

1.15 MB

9 чел.

Файлы

Чтобы сохранять входные данные и результаты неограниченно долго и иметь возможность воспользоваться ими в любой момент используют файлы на магнитных носителях информации.

По способу доступа к информации, записанной в файл, различают файлы прямого и последовательного доступа.

Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записывались. Как правило – это текстовые файлы.

Файлом прямого доступа называется файл, доступ к элементам которого осуществляется по адресу элемента. Как правило – это файлы баз данных.

Turbo Pascal поддерживает три типа файлов:

-         текстовые,

-         типизированные

-         нетипизированные.

К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных. Содержимое такого файла рассматривается как последовательность записей определенной структуры. Это файлы прямого доступа. Единицей измерения такого набора данных является сама запись.

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

Текстовые файлы

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Это файлы последовательного доступа. Структурной единицей текстовых файлов является строка. Данные в таких файлах хранятся в виде цепочки ASCII кодов и могут обрабатываться любым текстовым редактором. Каждая строка завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строки chr(10) и возврат каретки chr(13). Эти два символа задают стандартные действия по управлению текстовыми файлами.

Текстовые файлы описывается в разделе описания переменных:

Var
 <файловая переменная>:
TextFile;

Файловая переменная  - это имя переменной, которое используется в программном коде для работы с файлом.

Перед тем, как записать данные в файл или прочитать данные из файла, необходимо сначала открыть этот файл. Открытие текстового файла на запись, чтение или дозапись осуществляется с помощью разных процедур. Но прежде, чем их использовать, необходимо во всех случаях присвоить файлу на магнитном носителе имя, т.е. установить соответствие между файловой переменной в программе и именем файла на диске. Это делается с помощью процедуры AssignFile:

AssignFile(<файловая переменная>,<имя файла>),

Здесь имя файла - любое выражение строкового типа, которое строится по правилам определения имен в операционной системе.

Например:

AssignFile(F,’c:\Student\Primer.Txt’);

Процедуры для открытия текстовых файлов 

В таблице F – имя файловой переменной.

Обращение к процедуре

Действие

Rewrite (F)

Открывает (создает) новый файл. Имя файла предварительно определяется в процедуре AssignFile. Если на диске уже был файл с таким именем, то он уничтожается.

Reset (F)

Открывает уже существующий файл. Файл считывается последовательно. Если эта процедура применена к несуществующему файлу, то возникает ошибка ввода-вывода.

Append (F)

Открывает уже существующий файл для дозаписи. Запись производится в конец файла.

У текстовых файлов есть своя специфика. Специальные расширения стандартных процедур чтения (Read) и записи (Write), описанных ниже, разрешают работать со значениями несимвольного типа. Другими словами, последовательность символов автоматически преобразуется к значению того типа переменной, которая используется в файловых операциях.

Вызов Read(F,Ww), где Ww - переменная типа word, осуществляет чтение из файла F последовательности цифр, которая затем интерпретируется в число, значение которого и будет присвоено переменной Ww. В случае, если вместо последовательности цифр идет любая другая последовательность символов, использование такого оператора приводит к ошибке выполнения программы.

В таблице F – имя файловой переменной.

V1,V2,…,Vn – переменные разных типов

Обращение к процедуре

Действие

Read (F,V1[,V2,…,Vn]);

Считывает из дискового файла строки символов в переменные V1, V2,…,Vn.

Readln (F,V1[,V2,…,Vn]);

Выполняет те же действия, что и Read, и дополнительно – чтение до маркера конца строки и переход к новой строке
Readln(F) без списка переменных позволяет пропустить строку в файле и перейти на новую строку.

Write (F,V1[,V2,…,Vn]);

Записывает значения переменных V1,V2,…,Vn в файл на диске.

Writeln (F,V1[,V2,…,Vn]);

Выполняет те же действия, что и Write, но обеспечивает запись всех величин с обязательной установкой маркера конца строки в файл.
Writeln(F) без списка переменных. записывает в файл пустую строку.

Закрытие файла

После работы с файлом его нужно обязательно закрыть, иначе информация в файле может быть потеряна. Это делается с помощью процедуры CloseFile(F).

Функция

Действие

Eoln(F)

Возвращает булевское значение True, если текущая файловая позиция находится на маркере конца строки или вызов Eof(F) вернул значение True. Во всех остальных случаях значение функции будет False.

Eof(F)

Возвращает булевское значение True, если указатель конца файла находится сразу за последним компонентом, и False – в противном случае.

SeekEoln(F)

Возвращает булевское значение True, при достижении маркера конца строки, причем указатель файла пропускает все пробелы и знаки табуляции, предшествующие маркеру. В противном случае возвращает значение False.

SeekEof(F)

Возвращает булевское значение True, если указатель файла находится на маркере конца файла. Эта функция также пропускает все пробелы и знаки табуляции, предшествующие маркеру, и выполняет автоматический пропуск маркера конца строки.

Пример.

Записать в файл текст, введенный в окне Edit.

Программный код

 

Пример. Открыть текстовый файл для чтения, считать из него текст в окно Memo. Перед открытием файла проверить его наличие; в случае отсутствия выдать сообщение

 Фрагмент кода программы

Пример. Открыть текстовый файл для дополнения, добавить в него текст из окна Edit.

Фрагмент кода программы

Пример.  Стихотворный текст (в строке не более 80 символов) записать «лесенкой» (по одному слову в строке).

 

                     

Краткая характеристика компонентов группы Dialogs

В состав среды Delphi входят десять компонентов группы Dialogs, реализующих работу со стандартными диалоговыми панелями Windows. Эти компоненты облегчают разработку стандартных фрагментов приложения, таких как выбор нужного файла, цвета, шрифта, работу с принтером. Для определения, какая из кнопок диалоговой панели была нажата, используется метод Execute. Если нажата кнопка «ОК», то он возвращает значение True, если кнопка «Отмена», то значение False.

Компонент OpenDialog  позволяет выбрать файл для открытия из стандартного диалогового окна Windows.

Свойства компонента OpenDialog

DefaultExt 

Создает расширение файла автоматически.

Filter

Позволяет задать шаблон имен открываемых файлов в окне редактора фильтров. Можно одновременно определить несколько фильтров.

InitialDir 

В этом свойстве хранится название рабочего каталога.

FileName 

В этом свойстве хранится название выбранного файла.

Options →

  

В этом свойстве находится ряд опций открываемой панели – свойств типа Boolean. Опция включена, если ее значение True, и отключена, если - False.

 

OfAllowMultiSelect 

Позволяет выбрать несколько файлов одновременно

 

ofCreatePromt 

Выдает запрос на создание файла, если его нет

 

ofFileMustExist

Позволяет выбирать только существующие файлы

 

ofNoChangeDir

Запрещает изменение каталога

 

ofOwerwritePromt

Запрашивает подтверждение на сохранение существующего файла

 

ofReadOnly 

Помечает флажок Read Only (только для чтения)

 

ofNoReadOnlyReturn

Запрещает выбор файла только для чтения.

Title 

Задает текст заголовка панели.

Пример использования в программе

Компонент SaveDialog  позволяет выбрать файл для сохранения из стандартного диалогового окна Windows. По внешнему виду и порядку работы практически аналогичен компоненту OpenDialog.Различаются только надписи и некоторые свойства.

Компонент FontDialog  позволяет вызвать стандартную диалоговую панель выбора шрифтов и их характеристик.

Свойства компонента FontDialog

Font

Определяет, какой шрифт был выбран для последующей работы.

Device

Выбор списка, используемых шрифтов: только для принтера, только для дисплея или для того и другого устройства.

Options

Задает опции диалоговой панели

 

FdAnsiOnly

Работа только со шрифтами, поддерживаемыми Windows 

 

fdEffects

Использование для шрифтов эффектов и цветов

 

fdFixedPitchOnly

Работа только с непропорциональными шрифтами

 

fdForceFontExist

Выдает сообщение при выборе несуществующего шрифта

 

fdTrueTypeOnly 

Работа только со шрифтами TrueType 

 

fdLimitSize -

Ограничивает размер выбираемого шрифта

Пример использования в программе

Компонент ColorDialog  позволяет вызвать стандартную диалоговую панель настройки цветов.

Свойства компонента ColorDialog

Color

Сохраняет выбранный цвет

Options

Свойство состоит из следующих опций:

 

CdFullOpen 

Выполнить полный показ диалога

 

cdPreventFullOpen 

Запретить полный показ диалога

Пример использования в программе

Компонент FindDialog  позволяет вызвать стандартную диалоговую панель поиска текста. Позволяет ввести текст для поиска. Сам поиск программируется самостоятельно.

Свойства компонента FindDialog

FindText 

Хранит текст для последующего поиска.

Options 

В этом свойстве заданы опции панели. Эти опции на включение в панель дополнительных сервисных кнопок.

Компонент ReplaseDialog позволяет вызвать стандартную диалоговую панель поиска и замены текста. Позволяет ввести текст для поиска. Сам поиск программируется самостоятельно.

Свойства компонента ReplaseDialog

FindText 

Хранит текст для поиска.

ReplaceText

Хранит текст для замены.

Пример. Ввести двумерную матрицу из файла. Для открытия нужного файла использовать компонент OpenDialog.

Программный код


 

А также другие работы, которые могут Вас заинтересовать

23483. Имя (ὄνομα, nomen) 253.5 KB
  Категория рода γένος genus образована противопоставлением трёх родов: 1. родительный падеж γενική genetivus служит падежом определения выраженного существительным кого чего чей а также обозначает лицо или предмет от которого ктолибо или чтолибо удаляется отделяется освобождается от кого от чего; 3. Их можно представить в виде следующей таблицы:7 число singularis pluralis падеж род m f n m f n nominativus ς ø8 ν ø ι ες ᾰ genetivus ς ιο ος ων dativus ῐ ις σῐ accusativus ν который после согласных...
23484. Занимательная Греция 1.66 MB
  Царь Кекроп воцаряется в Афинах. Царь Кадм основатель Кадмеи пришел в Фивы из Финикии и научил греков письменности. Царь Минос сын Зевса воцарился на Крите а фригийские карлики научили греков ковать железо. Аргосский царь Фидон ввел в употребление точные меры весы и деньги Вы скажете: Разве это история Это сказка Это все равно что составлять таблицу по хронологии Киевской Руси и включать в нее даты: тогдато Илья Муромец убил Соловьяразбойника а тогдато Руслан Черномора.
23486. САНСКРИТСКО-РУССКИЙ УЧЕБНЫЙ СЛОВАРЬ 1.58 MB
  потом затем отсюда; поэтому на этом основании Ait áti очень чрезвычайно; чрезмерно; мимо через; ati чрез слишком очень Aitkaep atikopa m сильный гнев Aitm atikram формы см. чрезмерно очень Aitr hs atiraWhas необыкновенно быстрый Aitrek atireka т излишность чрезмерность Aitlael atilola чрезвычайно шаткий AitlaELy atilaulya п чрезмерная жадность AitvtR ativart формы см. vart проходить протекать о времени; преодолевать; отвращать устранять AitvLlta ativallabhatA f беспредельная любовь Aitvh ativah формы см....
23487. ЛАТИНСКИЙ АЛФАВИТ 52.5 KB
  Помимо гласных a e o u i y в латинском языке были также дифтонги сочетания двух гласных составляющих один слог. Сочетание gu и su в положении перед гласным с которым они составляют один слог читаются соответственно [gv] и [sv] например lingua [lingva] язык . Ударение в латинском языке не падает на последний слог. Следовательно в двусложных словах ударение всегда падает на первый слог например: stella звезда планета bene хорошо .
23488. Латинский язык с Титом Ливием История Рима от образования города 1.08 MB
  Troia et huic loco nomen est. ibi egressi Troiani, ut quibus ab immenso prope errore nihil praeter arma et naues superesset, cum praedam ex agris agerent, Latinus rex Aboriginesque qui tum ea tenebant loca ad arcendam uim aduenarum armati ex urbe atque agris concurrunt.
23489. Словарь латинских выражений 39.02 KB
  : от яйца до яблок; у римлян обед начинался с яиц кончался яблоками Absque omni exceptione без всякого сомнения Ab urbe condita от основания Рима Abusus in Baccho злоупотребление вином А contrario доказывать от противного Acta diurna происшествия дня хроника Actum atque tractatum сделано и обсуждено Ad absurdum приведение к нелепому выводу Ad avisandum для предуведомления Ad cogitandum et agendum homo natus est для мысли и действия рожден человек Ad disputandum для обсуждения Ad exemplum по образцу; для...
23490. Латинский язык без труда/Latin: Easy Way 142.5 KB
  Допустим первый элемент выглядит так: Marcus Brutus Caesarem Содеявший Потерпевший Итак если вы знаете историю то сочетание имен в первом элементе фразы само подскажет вам какое действие ожидается что должно произойти. Marcus Brutus . А пока поверьте на слово что если бы Marcus Brutus был не убийцей а убитым он бы превратился в Marcum Brutum. Marcus Brutus Tulliam увидел .
23491. Сербский язык для начинающих: Учебник и разговорник 244.94 KB
  Б`рзалица Урок 1 Упознавање Милан: Здраво Аљоша1 Уђи Тата и мама нису код куће. Аљоша: Драго ми jе. Jа сам Аљоша. Драгана: Ти ниси из Београда Аљоша: Не нисам.