Основы офисного программирования и язык VBA


Ввод-вывод для файлов произвольного доступа и бинарных файлов - часть 3


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

Пример 14.5.

(html, txt)

Приведем результаты отладочной печати:

Код Товара: 7 Цена: 294 Код Товара: 3 Цена: 141 Код Товара: 3 Цена: 84 Код Товара: 1 Цена: 18 Код Товара: 6 Цена: 246 Код Товара: 8 Цена: 472 Код Товара: 8 Цена: 376 Код Товара: 7 Цена: 483 Код Товара: 2 Цена: 168 Код Товара: 8 Цена: 224 Файл Товары.9 успешно создан Размер файла 112

Прокомментируем эти процедуры и полученные результаты. Первая процедура генерирует запись, используя датчик случайных чисел ѕ функцию Rnd. Ранее в своих примерах мы уже использовали эту функцию и подробно говорили о том, как она работает. Вторая процедура позволяет вывести запись в окно отладки. Основной является процедура CreateRandomFile, в которой открывается файл "Товары.9" как файл с произвольным доступом, открытый для записи. При открытии, что очень важно, мы не забыли указать длину записи. Поскольку файл предназначен для хранения значений переменных типа "Товар", то этот тип и определяет длину записи, ѕ она равна 14 байтов (10 байтов занимает строка постоянной длины и 4 байта требуется для двух полей типа Integer).В процедуре 10 раз генерируется новая запись и 10 раз выполняется оператор Put, производящий запись в файл. Но как показывают результаты отладочной печати, некоторые коды повторяются, поэтому в таких случаях происходит обновление содержимого записи. В данном примере только 6 записей имеют уникальный код, и 4 раза происходило обновление уже созданных записей. Важно обратить внимание на длину созданного файла. Анализируя эту характеристику, можно понять, что файл содержит 8 записей, а не 10 и не 6. Дело в том, что длина файла произвольного доступа определяется записью с максимальным номером. Пусть в файле есть запись с максимальным номером M. И пусть добавляется новая запись с номером N, большим M. В этот момент в файле будут созданы новые записи с номерами от M+1 до N включительно.


Начало  Назад  Вперед



Книжный магазин