Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MS_VB_dop_vozm_5_04.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
1.64 Mб
Скачать
      1. Типизированные файлы

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

С понятием типизированного файла тесно связано понятие указателя на текущий элемент файла. В любой момент времени один из элементов файла является «активным», т.е. с ним могут производиться какие либо действия. Каждый элемент двоичного файла имеет порядковый номер (нумерация начинается с единицы), по которому к нему следует обращаться (см. рис. 1.1).

1

2

3

N

Элемент 1

Элемент 2

Элемент 3

...

Элемент N

...

указатель

Рис. 1.1. Схема изображения содержимого двоичного файла

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

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

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

Open путь For Binary As номер,

где

Open – служебное слово, используемое при открытии или создании файла;

путь – строка или переменная типа String, содержимым которой является полный путь к требуемому файлу;

For – ключевое слово для определения типа файла;

Binary – служебное слово, используемое при создании или открытии двоичного файла;

As – ключевое слово для определения переменной либо константы, содержащей файловый номер, посредством которого будет в дальнейшем осуществляться обработка файла;

номер – имя переменной, содержащей номер файла, либо константа.

Закрытие файлов. По окончании работы с любым файлом его необходимо закрыть при помощи оператора Close, синтаксис которого одинаков для всех типов файлов:

Close номер.

Удаление файлов. Для удаления файла с диска используется оператор Kill, формат которого следующий:

Kill путь, где путь – полный путь к требуемому файлу.

Перед удалением файла его необходимо закрыть.

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

номер = FreeFile, где номер – переменная целого типа для номера файла.

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

Name путь1 As путь2,

где

путь1 – строка или строковая переменная, содержащая путь к исходному файлу;

путь2 – строка или строковая переменная, содержимым которой является новый путь к файлу.

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

FileCopy путь1, путь2,

где путь1 – путь к исходному файлу; путь2 – путь к новому файлу.

При работе с открытыми файлами возможно выполнение двух операций: занесение данных в файл и считывание данных из файла.

Занесение (запись) данных в файл. Для записи какой-либо информации в двоичный файл используется оператор Put:

Put номер, позиция, переменная,

где

номер – переменная, которая содержит файловый номер, либо константа;

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

переменная – название переменной, содержимое которой записывается в файл.

Извлечение (считывание) информации из файла. Для извлечения информации из файла применяется оператор Get, формат которого совпадает с оператором Put.

Get номер, позиция, переменная.

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

При использовании операторов Put и Get перед номером файла можно ставить знак #.

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

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

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

Таблица 1.1

Функции и процедуры для работы с файлами, каталогами и дисками

Название

Описание

ChDir (путь)

Оператор, устанавливающий новый рабочий каталог на текущем диске

ChDrive (диск)

Оператор для определения нового рабочего диска

CurDir

Функция возвращающая путь к рабочему каталогу

MkDir (путь)

Оператор, создающий новый каталог

RmDir (путь)

Опрератор для удаления существующего каталога, который должен быть пуст

Функция EOF (номер файла)

Для обнаружения конца файла. Возвращает значение TRUE, когда достигнут маркер конца файла

Функция LOF(номер файла)

Определяет и возвращает длину файла в байтах

Функция LOС(номер файла)

Определяет и возвращает число символов, прочитанных на данный момент

Пример 1.1. Создать файлы a1.bin и a2.bin. После этого надо заполнить файл a1.bin значениями массива, состоящего из 10 элементов типа Integer, которые содержат четвертые степени целых чисел от 1 до 10. Затем требуется извлечь содержимое файла a1.bin в массив arrB, в котором необходимо вычислить квадратные корни из всех элементов. Полученный массив занести в файл a2.bin. После этого оба файла закрыть.

Программа для выполнения этой задачи приведена ниже.

Option Explicit

Private Sub Form_Load()

Dim Fnum1 As Integer

Dim Fnum2 As Integer

Dim arrA (1 To 10) As Integer

Dim arrB (1 to 10) As Integer

Dim intI As Byte

Dim Fpath1 as String

Dim Fpath2 as String

Fpath1=“a1.bin”

Fpath2=“a2.bin”

Fnum1=FreeFile ‘определение свободного файлового номера

Open Fpath1 For Binary As Fnum1 открытие файла a1.bin

Fnum2=FreeFile ‘определение свободного файлового номера

Open Fpath2 For Binary As Fnum2 открытие файла a2.bin

For intI=1 to 10

arrA(intI)=intI^4 заполнение массива arrA

Put Fnum1, intI*2-1, arrA(intI)

Next

For intI=1 to 10

Get Fnum1, intI*2-1, arrB(intI) извлечение из файла а1.bin в массив arrB

arrB(intI)=Sqr(arrB(intI)) ‘вычисление квадратного корня

Put Fnum2, intI*2-1, arrB(intI)

Next

Close Fnum1 закрытие файла

Close Fnum2закрытие файла

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]