Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности




НазваниеФайл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности
страница1/5
Дата конвертации15.02.2016
Размер0.68 Mb.
ТипДокументы
источникhttp://maispace.ru/docs/mailit/Файлы в Delphi.doc
  1   2   3   4   5
Файлы


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


Способы работы с файлами в системе Delphi 7


При работе с файлами в системе Delphi 7 возможны два принципиально разных подхода. Первый состоит в использовании стандартных подпрограмм (они имелись еще в классической версии Паскаля тридцатилетней давности), позволяющих записывать содержимое переменных в файлы и считывать их обратно из файлов в переменные. К этим средствам добавились также библиотеки стандартных функций по работе с файлами, основанные на системных функциях Windows.

В связи с появлением версии Object Pascal и реализации понятия класса в языке появились средства объектной работы с данными. Это второй подход к работе с файлами в системе Delphi 7. В свою очередь в рамках каждого из подходов применяются также существенно различающиеся приемы. Например, при классическом подходе в работе с файлами могут использоваться прямые обращения к функциям Windows или обращения к функциям BIOS.




Общая технология работы с файлами в Delphi 7


Несмотря на все различия, независимо от используемого подхода технология работы с файлами в системе Delphi 7 требует определенного порядка действий.

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

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

После того как файл успешно открыт, в программу возвращается его идентификатор — переменная, которая будет использоваться для идентификации этого файла во всех процедурах обработки.

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

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


1.Работа с файловыми данными


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

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




Типы файлов


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

  • типизированные;

  • текстовые;

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

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

<Имя файлового типа> = file of <Тип>;

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

Следующие примеры объявления файловых типов и файловых переменных не приведут к ошибке компилятора.


type TCompanylnfo = record Name:string[20] ;

Address:string[20] ;

Staff:byte; end;

type TFileOfByte = file of byte; type TFileOfChar = file of char; type TFileOfString20 = file of string[20]; type TCompanylnfoFile = file of TCompanylnfo;

var

FileOfByte:TFileOfByte;

FileOfChar:TFileOfChar;

FileOfString20:TFileOfString20;

CompanylnfoFile:TCompanylnfo;


Также возможен вариант без предварительного объявления файловых типов.


var

FileOfByte:file of byte;

FileOfChar:file of char;

FileOfString20: file of string[20];

CompanylnfoFile: file of TCompanylnfo;


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


Article: TextFile;


В Delphi объявлены две глобальные переменные Input и Output, предназначенные для работы со стандартными текстовыми файлами. Переменная Input используется для чтения строковых значений, введенных с клавиатуры, а переменная Output используется для вывода информации на экран монитора. Обмен текстовой информацией с помощью данных переменных доступен только в консольных приложениях. При этом на практике в процедурах ввода и вывода информации (Read/Readln и Write/Writeln) необязательно указывать имя соответствующей переменной. Таким образом, следующие пары операторов являются эквивалентными.

Readln(str);

Readln(Input, str);

Writeln(str);

Writeln(Output, str);


1.1.Объявление файла


Как и любая структура данных (переменная, массив) программы, файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла.

В общем виде объявление файла выглядит так:


Имя:file of ТипЭлементов;

Примеры:

res: file of char; // файл символов

koef: file of real; // файл вещественных чисел

f: file of integer; // файл целых чисел


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


Имя: TextFile;


1.2.Назначение файла


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

Имя файла задается вызовом процедуры AssignFile, связывающей файловую переменную с конкретным файлом.

Описание процедуры AssignFile выглядит следующим образом:


AssignFile(var f, ИмяФайла: string);


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

Ниже приведены примеры вызова процедуры AssignFile:


AssignFile(f, 'а:\result.txt');

AssignFile(f, '\students\ivanov\korni.txt'); fname:=('otchet.txt');

AssignFile(f,fname);




1.3.Вывод в файл


Непосредственно вывод в текстовый файл осуществляется при помощи инструкции write или writeln. В общем виде эти инструкции записываются следующим образом:


Write(Файловая Переменная, Список Вывода);

writeln (Файловая Переменная, Список Вывода);

где:

  • Файловая Переменная переменная, идентифицирующая файл, в который выполняется вывод;

  • Список Вывода — разделенные запятыми имена переменных, значения которых надо вывести в файл. Помимо имен переменных в список вывода можно включать строковые константы.


Например, если переменная f является переменной типа TextFile, то инструкция вывода значений переменных x1 и х2 в файл может быть такой:

write(f, 'Корни уравнения', x1, х2);

Различие между инструкциями write и writeln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ "новая строка".




1.4.Открытие файла для вывода


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

Возможны следующие режимы открытия файла для записи в него данных:

  • перезапись (запись нового файла поверх существующего или создание нового файла);

  • добавление в существующий файл.

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

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

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

Р
ис. 1
. Диалоговое окно программы записи-добавления в файл

В Примере 1 приведена процедура, которая запускается нажатием командной кнопки Записать. Она открывает файл в режиме создания нового или замещения существующего файла и записывает текст, находящийся в поле компонента Memo1.

Имя файла нужно ввести во время работы в поле Edit1. Можно задать предопределенное имя файла во время разработки формы приложения. Для этого надо присвоить значение, например test.txt, свойству Edit1.Text.


Пример 1. Создание нового или замещение существующего файла


procedure. TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin

fName := Edit1.Text;

AssignFile(f, fName);

Rewrite (f); // открыть для перезаписи

// запись в файл

for i:=0 to Memo1. Lines. Count do //строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ЗАПИСАНЫ в файл',mt Information, [mbOk],0);

end;




В Примере 2 приведена процедура, которая запускается нажатием командной кнопки Добавить. Она открывает файл, имя которого указано в поле Edit1, и добавляет в него содержимое поля Memo1.


Пример 2. Добавление в существующий файл


procedure TForm1.Button2Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin

fName := Edit1.Text;

AssignFile(f, fName);

Append(f) ; // открыть для добавления // запись в файл

for i:=0 to Memo1. Lines. Count do // строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные ДОБАВЛЕНЫ в файл',mtInformation,[mbOk],0); end;


1.5.Ошибки открытия файла


Попытка открыть файл может завершиться неудачей и вызвать ошибку времени выполнения программы. Причин неудачи открытия файлов может быть несколько. Например, программа попытается открыть файл на гибком диске, который не готов к работе (не закрыта шторка накопителя или диск не вставлен в накопитель). Другая причина — отсутствие открываемого в режиме добавления файла (файла нет — добавлять некуда).

П
ри запуске программы из
Delphi в случае ошибки во время открытия файла возникает исключение, и на экране появляется диалоговое окно с сообщением (рис. 2).

Рис. 2. Пример сообщения об ошибке открытия файла (запуск из Delphi)


Если программа запускается из Windows, то окно с сообщением об ошибке выглядит иначе (рис. 3).

Р
ис. 3.
Пример сообщения об ошибке открытия файла (запуск из Windows)


Программа может взять на себя задачу контроля за результатом выполнения инструкции открытия файла. Сделать это можно, проверив значение функции IOResult. (input-output Result — результат ввода-вывода). Функция IOResult возвращает 0, если операция ввода-вывода завершилась успешно; в противном случае — код ошибки (не ноль).

Для того чтобы программа смогла проверить результат выполнения операции ввода/вывода, нужно разрешить ей это делать. Для этого надо перед инструкцией вызова процедуры открытия файла поместить директиву компилятору — строку {$I-}, которая запрещает автоматическую обработку ошибок ввода/вывода. Эта директива сообщает компилятору, что программа берет на себя контроль ошибок. После инструкции открытия файла следует поместить директиву {$I+}, восстанавливающую режим автоматической об работки ошибок ввода/вывода.

  1   2   3   4   5

Похожие:

Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconТема: Массивы. Виды массивов. Ввод, вывод массивов
В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconРеферат Разработана кластерная восемнадцатигрупповая система химических элементов до
Периодической системе элементов, но и дополнительно по кластерам химических элементов, определять прогнозные свойства новых элементов...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности icon1. Понятие системы управления базами данных
Основная особенность субд – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconВопросы к экзамену по «Общей и неорганической химии»
Периодический закон и периодическая система химических элементов Д. И. Менделеева, закономерности изменения свойств элементов и их...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconУрок в 9 классе по теме
Изучить естественное семейство сходных химических элементов главной подгруппы II группы периодической системы химических элементов,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconОснова Информационных систем, объект ее обработки база данных компьютеров
В широком смысле слова можно сказать, что бд – это совокупность сведений о конкретных объектах реального мира в какой-либо предметной...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconРеферат по химии на тему: «Неметаллы»
Положение неметаллических элементов в периодической системе химических элементов. Нахождение в природе. Общие химический и физические...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconПрограмма это последовательность команд, которую выполняет компьютер в процессе обработки данных
Ни компьютер в целом, ни его составные части не способны сами по себе обрабатывать информацию. Управляют работой компьютера программы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconПрограмма работы с базой данных Blackfish sql "Книги" (books). Подкаталог delploy\database содержит базу данных, подкаталоги deploy\client и deploy\server соответственно клиентскую и серверную части приложения
Программы работы с базами данных требуют, чтобы файлы баз данных находились в каталоге D:\Database
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconСистема хранения данных о студенческих научных достижениях
База данных о студенческих научных достижениях предназначена для хранения и обработки данных о научно-исследовательских работах студентов...
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©kzdocs.docdat.com 2012
обратиться к администрации
Документы
Главная страница