Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
P_LAB_12_Работа с файлами.doc
Скачиваний:
0
Добавлен:
06.05.2019
Размер:
80.38 Кб
Скачать

Типизированные файлы

Типизированные файлы являются двоичными файлами, содержащими последовательность однотипных данных. Объявление файловых переменных таких файлов имеет вид:

var <имя файловой переменной>: file of <тип данных>;

Например:

var F: file of real;

Процедуры чтения и записи Read и Write не отличаются от соответствующих процедур для текстовых файлов. Процедур, аналогичных Readln и Writeln, для типизированных файлов нет. Зато есть процедура Seek, позволяющая перемещаться по файлу не только последовательно, как в текстовых файлах, но сразу переходить к требуемому элементу. Имеется также функция FilePos, которая возвращает текущую позицию в файле.

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

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

Тип файловой переменной нетипизированного файла объявляется следующим образом:

var <имя файловой переменной>: file;

Открытие нетипизированных фалов осуществляется процедурами Reset и Rewrite, синтаксис которых несколько отличен от аналогичных процедур для других видов файлов тем, что в этих процедурах указывается размер одной записи в байтах. Вместо процедур записи и чтения Read и Write в нетипизированных файлах имеются процедуры BlockRead и BlockWrite, которые читают или записывают указанное в них число записей.

BlockRead (var F: File; var Buf; Count: Integer [; var Result: Integer]) - читает Count записей из нетипизированного файла, связанного с файловой переменной F, в буфер Buf. Если задан параметр Result, то в него возвращается число действительно прочитанных записей.

BlockWrite (var F: File; var Buf; Count: Integer [; var Result: Integer]) - записывает Count записей из буфера Buf в нетипизированный файл, связанный с файловой переменной F. Если задан параметр Result, то в него возвращается число действительно произведенных записей.

Ini – файлы

Файлы .INI - это текстовые файлы, предназначенные в 16-разрядных Windows 3.x для хранения информации о настройках различных приложений. Информация логически группируется в разделы, каждый из которых начинается оператором заголовка, заключенным в квадратные скобки. Например, [Desktop]. В строках, следующих за заголовком содержится информация, относящаяся к данному разделу, в форме:

<ключ>=<значение>

Пример фрагмента файла WIN.INI

[windows]

run=

NullPort=None

load=essdaemn.exe hpljsw.exe

device=Epson LX-100,EPSON9,LPT1:

[Desktop]

Wallpaper=(None)

TileWallpaper=0

WallpaperStyle=0

Pattern=(Нет)

[Intl]

iCountry=7

ICurrDigits=0

iCurrency=1

...

В Windows 95 и NT использование файлов .INI не поощряется и вместо типа TIniFile, инкапсулирующего свойства этих файлов, используются типы TRegistry, TRegIniFile и TRegistryIniFile, инкапсулирующие свойства системного реестра - registry.

Когда в приложении создается объект типа TIniFile, ему передается как FileName имя файла, с которым он связан. Свойства и методы TIniFile позволяют читать из файла .INI, записывать в него информацию, удалять целые разделы.

Файлы .INI, как правило, хранятся в каталоге Windows, который можно найти с помощью функции GetWindowsDirectory(Buffer, Size).

Функция GetWindowsDirectory возвращает путь к каталогу Windows. Этот каталог содержит файлы приложений Windows, файлы инициализации .ini и файлы справок .hlp. В этом каталоге вы можете хранить файлы инициализации и файлы справок своего приложения. Если приложение создает другие файлы, которые вы хотите хранить, не допуская к ним других пользователей, то помещайте их в каталог, указанный в переменной окружения HOMEPATH. При соответствующей установке этот каталог различен для всех пользователей.

Параметр Buffer является указателем на строку с нулевым символом в конце, в которую передается найденный путь. Этот путь записывается без заключительного обратного слэша "\", если только каталог Windows не является корневым.

Параметр Size указывает максимальный размер буфера в символах. Его величина должна быть не менее значения MAX_PATH.

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

Если функция не смогла успешно завершиться, то она возвращает нулевое значение. В этом случае узнать причину отказа можно, вызвав GetLastError.

Если ваш каталог Windows назван WIN95 и расположен на диске C, то операторы

var APchar:array[0..254] of char;

...

GetWindowsDirectory(APchar,255);

занесут APchar в путь: C:\WIN95. Если Windows установлен непосредственно в корневом каталоге, то результатом выполнения функции будет C:\.

Следующие операторы создают объект Ini типа TIniFile и связывают его с файлом My.ini:

var Ini:TIniFile;

...

Ini:=TIniFile.Create('MY.INI');

Следующий оператор проверяет наличие в файле раздела My Section, содержащего ключ MyKey:

if Ini.ValueExists('My Section','MyKey') then ...

Следующий оператор заносит в ключ MyKey раздела My Section значение '5':

Ini.WriteInteger('My Section','MyKey',5);

Следующий оператор удаляет ключ MyKey раздела My Section:

Ini.DeleteKey('My Section','MyKey');

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

Ini.UpdateFile;

Ini.Free;

Задания на разработку

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

2. Создайте приложение, которое работает с типизированным файлом (записывает и считывает данные числового одномерного массива).

3. Создайте приложение, которое работает с нетипизированным файлом (создает копии файлов).

4. Создайте приложение, которое сохраняет накстройки в Ini-файл(положение и размеры окна) и использует их при следующих загрузках приложения.