Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ввод и вывод с помощью внешних файлов

5.13.1. Данные типа файл.

Файл - это последовательность компонентов одного и того же типа. Типом компонентов файла может быть любой тип, кроме файлового типа. В отличие от массивов максимальное количество компонентов в файле никак не оговаривается при его объявлении.

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

С всяким файлом можно делать две операции:

- чтение данных из файла;

- запись данных в файл.

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

Различают три вида файлов:

- типизированные файлы;

- текстовые файлы;

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

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

Пример.

type Vektor = File Of Extended;

var FL1, FL2: Vektor;

FL3:File Of Integer;

 

Здесь объявляются три файловые переменные, причем компоненты файлов связанных с файловыми переменными FL1 и FL2 должны иметь тип Extended, а компоненты файла, связанного с FL3 – целый тип.

Текстовые файлы - это файлы для хранения информации в виде строк символов. Это фактически типизированные файлы, но в них используется понятие строки. Для текстовых файлов в Delphi заранее определен идентификатор типа - TextFile, поэтому при объявлении текстовых файлов достаточно в разделе переменных просто указать этот идентификатор:

var Fvx1, Fout1: TextFile;

Текстовый файл отличается от символьного файла (объявленного как File Of Char) тем, что он состоит из последовательности строк символов, каждая из которых заканчивается специальным символом "конец строки". Этот символ автоматически ставится в конце строки при создании файла.

Нетипизированные файлы - это файлы, для которых при объявлении файловой переменной тип компонентов файла не указывается (такие файлы используются для повышения скорости обработки файлов). Для объявления файловой переменной нетипизированного файла достаточно указать ключевое слово File.

Пример. Var Fa, Fb: File;

 

5.13.2. Процедуры и функции для работы с файлами.

 

Для выполнения различных действий с файлами в Delphi имеется большой набор стандартных процедур и функций. Приведем здесь краткие сведения о некоторых из них.

Процедура AssignFile(ФП, 'путь'); - связывает файловую переменную ФП с внешним файлом. Если файл располагается в другом каталоге, то надо указывать путь к файлу. Пример.

 

Var Fs, Fw: TextFile;

...........

AssignFile (Fw, 'C:\MF\ Lab1.txt');

 

Здесь файловая переменная Fw связывается с файлом Lab1.txt, который находится в папке MF на диске C.

Процедура Reset(ФП[,Size]); - инициирует файл связанный с файловой переменной ФП для чтения. Необязательный параметр Size используется только с файлами без типа и указывает размер пересылаемого элемента информации в байтах (по умолчанию – 128 байт). Для типизированных файлов (кроме текстовых), открытых с помощью процедуры Reset, можно использовать процедуру Write (то есть записывать данные –добавлять).

 

Процедура Rewrite(ФП[,Size]); - Открывает новый пустой файл с именем, указанным в процедуре AssignFile. При выполнении этой процедуры старый файл (если он был создан) уничтожается, при этом никаких сообщений не выдается. Новый файл подготавливается к записи данных с начала файла.

 

Процедура Append(ФП); - подготавливает текстовый файл для добавления, то есть указатель файла устанавливается не в начало, а в конец файла. Эта процедура применима только к текстовым файлам.

 

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

 

Функция Eof(ФП); - определяет конец файла. Возвращает True если достигнут конец файла (иначе False).

Процедура Erase(ФП); - Уничтожает файл. До выполнения этой процедуры файл должен быть закрыт. Для удаления файла можно также использовать функцию DeleteFile, которая не требует предварительного связывания имени файла с файловой переменной.

При работе с файлами полезно проверять – существует ли требуемый файл. Для этого есть функция FileExists(имя файла).

Например,

If FileExists(имя файла) Then

.............. // обработка

else

сообщение???

см Ф стр.196

Функция FindFirst (Const Path: String; Attr:Integer; var F:TsearchRec): Integer; - возвращает атрибуты первого из файлов, зарегестрированных в указанном каталоге: Path – путь и маска выбора файлов; Attr – атрибуты выбираемых файлов; F – переменная типа TSearchRec, в которой будет возвращено имя первого выбранного файла (при успешном поиске возвращает значение 0).??

 

Функция FindNext (var F:TsearchRec): Integer;- возвращает в переменной F имя следующего файла в каталоге. Переменная F должна предварительно инициализироваться обращением к функции FindFirst. При успешном поиске возвращает 0.

 

Есть некоторые особенности при записи данных в файл типа Text и файлы других типов.

1. При записи чисел в файл типа Text необходимо предусматривать пробелы в качестве разделителя, а в числовые файлы (типа Integer, Real, …) числа записываются сплошным потоком.

 

2. Обычно для обработки файлов используют циклический процесс. Так как количество компонентов в файле неизвестно, то возникает проблема определения момента завершения цикла. Обычно для прекращения циклического процесса используют функцию Eof().

 

3. Процедуры открытия и закрытия файлов можно размещать в секциях Initialization и Finalization модуля.

 

4. Для чтения данных из файла используются процедуры Read и Readln; для записи данных в файл используются процедуры Write и Writeln.

 

Пример. Пусть имеем входной файл Vxod5.txt и выходной файл Out5.txt.

Создадим проект, в котором при нажатии на кнопку "операция" выполняются следующие действия:

- из файла Vxod5.txt читается число в переменную Х;

- вычисляется У:= Х*Х;

- результат У выводится в поле Edit формы и записывается в выходной файл Out5.txt.

Возьмем предыдущий проект и удалим текст, который записан в обработчике события кнопки "операция". В свойстве Caption формы запишем "Пример5". Далее добавим в модуль следующий текст:

а) В раздел описания переменных добавим описание файловых переменных, так чтобы этот раздел имел вид

Var Form1: Tform1;

S:String;

X,Y: Real;

Fa,FB: TextFile;

б) В обработчике события кнопки "операция" запишем

 

procedure TForm1.Button2Click(Sender: TObject);

begin

<== предыдущая лекция | следующая лекция ==>
Свойства компонента StringGrid | Пример. Создание главного меню
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 825; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.026 сек.