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.

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


 

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

75904. Политические партии в России в начале ХХ в.: сравнительный анализ программных лозунгов и деятельности двух-трех партий на выбор 186.39 KB
  Лидеры партии отстаивали целостность России допуская автономию только для Финляндии и Польши. Лидерами партии были известные предприниматели и финансисты А.
75905. Почему большевики смогли взять и удержать власть 15.43 KB
  Напротив большевики придя к власти незамедлительно приняли Декрет о земле отменивший право частной собственности на землю: земля переходила во всенародную государственную собственность; В 1914-1918 гг. Большевики соответственно также издали и Декрет о мире; Политическая раздробленность царившая среди остальных партийных кругов компромисс кадетов с эсерами с меньшевиками привела к потере ими фактического влияния в стране; наиболее организованной группой оставались лишь большевики способные в короткий срок мобилизовать собственные...
75906. Диссидентское движение в СССР: основные направления, лидеры и результаты деятельности 19.6 KB
  Диссиденты (лат. dissidents - несогласный) - термин, который с середины 70-х годов применялся к лицам, открыто спорившим с официальными доктринами в тех или иных областях общественной жизни СССР и пришедшим к явному столкновению с аппаратом власти. Первые годы брежневского правления
75907. Сравнительный анализ политических программ двух-трех современных российских политических партий (целевая аудитория (электорат) партии, образ желаемого будущего России (политическая, социально-экономическая модели, место России в международных процессах) 16.93 KB
  Все три партии видят будущее России поразному. Окончательное формирование социалистических общественных отношений В качестве альтернативы этим шагам предусмотрена программаминимум которая предполагает национализацию природных богатств России установление власти трудящихся и т. В программе ЕР нет ясного положения относительно будущего России какой она должна быть отсутствует там и идеология партии.
75908. Аграрная политика в дореволюционной России и в СССР: крепостное право и коллективизация без выдачи паспортов, община и колхоз 16.6 KB
  Крепостное право и кресьянская община. В России крестьянская община зародилась вместе с Древнерусским государством и видоизменяясь просуществовала вплоть до конца 1920х. В период Киевской Руси крестьянская община стала основной производящей единицей.
75909. В чем причины кризиса советской экономики в 1980-е гг.? Системный кризис, падение цен на нефть, нерентабельность производства, экстенсивный характер развития? Причины субъективные и объективные 15.55 KB
  Системный кризис падение цен на нефть нерентабельность производства экстенсивный характер развития Причины субъективные и объективные. Проблемы экономического развития были вызваны рядом причин: Системный кризис. В условиях догоняющего развития без демократических свобод при отсутствии гражданского общества в СССР произошла подмена цели средствами главной жертвой которой стала свобода как необходимое хотя и не единственное условие развития человека его инициативы и предприимчивости. Советская модель хозяйствования лишенная...
75910. Как характеризуют существовавшие в конце 80-х - начале 90-х программы реформ Г.Явлинский и А.Чубайс? Каковы отличия в подходах и восприятии 18.19 KB
  Российская приватизация по масштабам и объему стоящих перед ней задач принципиально отличалась от приватизации осуществленной в 1980е годы в странах Запада.Чубайс прохладно относился к приватизации однако понимал важность ее осущетсвления в рамках проведения рыночных реформ. списка литры: мы вели очень жесткую теоретическую дискуссию с Виталием Найшулем как автором концепции ваучерной приватизации приводили ему длинный список катастрофических тяжелейших последствий которые она неизбежно повлечет за собой. мне лично тема приватизации...
75911. Особенности шоковой терапии и приватизации в России 18.04 KB
  Особенности процесса приватизации происходившего в России: массовый характер приватизации вызванный высокой долей государственной собственности в стране а также стремлением ускорить процесс преобразования экономической структуры общества; значительный удельный вес неэквивалентных форм безвозмездная передача оплата не в полной мере и др. вызванный отсутствием денежных средств в частных руках; проведение особого ваучерного этапа приватизации. Целью приватизации провозглашалось создание эффективного собственника однако бесплатная...
75912. Российские экономические реформы 1990-х гг. в оценках западных исследователей: направления критики 19.84 KB
  В оценках западных исследователей: направления критики Негативная оценка результатов российских реформ общее в выступлениях экономистов Оправдывать или объяснять логику развития событий в России становится неприличным и социально опасным Российские реформы далеки от того чтобы считать их феноменально успешными Главные аргументы критиков Игнорирование китайского опыта...