Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_1 Mетодичка-Exel_укр_2.doc
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
1.43 Mб
Скачать

33.Запис даних у файл довільного доступу

Дискові файли довільного доступу значно відрізняються від дискових файлів послідовного доступу. Файл довільного доступу розглядається, як список записів однакової довжини, кожна з яких може бути прочитана або записана у будь-який момент часу і у будь-якому порядку.

33.1.Читання і запис файлів довільного доступу

Файли довільного доступу розглядаються як послідовність записей постоянной довжини, причому кожен запис є незалежним від усіх інших записей файлу. Довжина запису визначається в операторові Open, а тип даних, вказаний користувачем, визначає її вміст. Файли довільного доступу використовуються в основному для зберігання двійкових представлень чисел, а не текстів. Применение двійкових чисел економить простір файлу в порівнянні з символьним представленням тих же чисел. Крім того, двоїчні числа завантажуються в пам'ять комп’ютера, значно швидше, оскільки не вимагають перетворення перед використанням.

33.2.Відкриття файлу

Відкриття файлу довільного доступу подібно до відкриття файлу послідовного доступу оператором Open, з двома істотними відмінностями: аргумент режим завжди приймає значення Random, а в кінці командного рядка оператора знаходиться аргумент Len = довжина_запису.

Синтаксис оператор Open для відкриття файлу довільного доступу наступний:

Open ім’я _файлу For Random As файлове_число len= довжина_запису

де ім’я_файлу — рядок, що містить ім'я і шлях до файлу для відкриття;

фаилове_число — число, яке треба привласнити файлу; довжина_запису — довжина запису довільного доступу в байтах.

Примітка:

Оптимальна довжина запису повинна або бути кратною розміру дискового сектора, або ділити вказаний розмір без остачі. Більшість дискових накопичувачів мають сектора розміром 512 або 1024 байтів; отже, оптимальна довжина запису повина бути ступенем 2, наприклад 32, 64, 128, 256 і так далі. Така довжина є цілесообразною тому, що комп'ютер записує і читає дані секторами одинаковой довжини. Хоча програма може запитати читання з дискового файлу усього один байт, але ж в буфер пам'яті буде прочитано один чи більше секторів.

Приклад, наступні оператори відкривають файл довільного доступу для читання або запису:

FileNum = FreeFile()

Open "myfile.txt" For Random As FileNum len = 256

Цей блок кодe відкриває файл довільного доступу myfile.txt із записями довжиною 256 байтів. Функція FreeFile() вибирає вільне файлове число.

33.3. Закриття файлу довільного доступу

Файл довільного доступу, так само як і послідовний файл, закривається оператором Close:

Close # файлове_число

де файлове_число — файлове число, вказане при відкритті цього файлу.

33.4. Визначення структури та довжини запису

Для роботи з файлами довільного доступу потрібно зясувати стуктуру та довжину запису. Для цього застосовується оператор Type, такий як застосовується для оголошення типа, який визначається користувачем, за винятком того, що при оголошенні змінних типа запису не використовується тип Variant тому, що всі строкові змінні повинні мати постійну довжину. Максимальна довжина запису, визначеного оператором Type, має бути не більше довжини запису, оголошеного оператором Open. Але, якщо будемо використовувати типи меншої довжини, ніж оголошено при відкритті файлу, то при збереженні кожного запису на диску різниця між довжиною типа і довжиною запису витрачатиметься даремно.

Якщо в операторові Type використовувати рядки змінної довжини, то для вказівки довжини рядка буде потрібно два додаткові байти на кожен рядок. Якщо використовувати змінні типа Variant, то також потрібно буде додати два байти (для завдання типа) до байтів, що містять значення змінної. Якщо використовуєте рядки змінної довжини і змінні типу Variant в типові, який повинен був бути збережений в записі, то загальна довжина типа завжди має бути не більше довжини запису інакше отримаєте помилку. Оскільки неможливо бути упевненим в тому, що загальна довжина змінних в записі відповідатиме даній умові, довжини; кожній змінній зазвичай оголошується в типові.

Синтаксис оператора Type:

Type назва_запису

Атрибут_1 As тип [* m]

Атрибут_2 As тип [* m]

Атрибут_n As тип [* m]

End Type

де * m – кількість байт для типу String, для уточнення довжини змінної Атрибут.

Так, приведений нижче приклад оператору Type з програми роботи з базою даних персональных контактів визначає запис завдовжки в 256 байтів. Кожен рядок має постійну довжину, що в звичайному операторові Type не вимагається.

Type DBEntry 'Визначає структуру запису бази даних

Name Аз String * 25 ' атрибут Name структури DBEntry символьного типу, довжина поля 25 Байт

Address As String * 25

City As String * 15

State As String * 2

Zip As String * 10

Phone As String * 20

Net As String * 10

NetAddr As String * 25

Referral As String * 25

Notes Аз String * 97

RecNo As Integer

End Type 'Розмір типа 256 байтів

Аби взнати довжину типа, визначуваного користувачем, необхідно або скласти довжини всіх змінних, або оголосити змінну вказаного типа, а потім застосувати до неї функцію Len().

Наприклад, якщо запустить процедуру ініціалізації бази даних персональних контактів після оголошення масиву theDB() з вказівкою типу його структури та потім застосуємо функцію Len() для визначення довжини запису:

Dim theDB(1) As DBEntry

А=len(theDB(1))

То отримаємо А=256

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