Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual Basic.doc
Скачиваний:
24
Добавлен:
21.02.2016
Размер:
15.63 Mб
Скачать

5.5 Тест

Відповідь

Вміє

Не вміє

  1. Підпрограма-функція призначена для . . .

    1. призначені для обчислення деякого параметру

    1. для виконання деякої послідовності дій

    1. для виведення повідомлення

  1. Щоб створити підпрограму-слід . . .

    1. розчинити вікно коду, ввести заголовок процедури

    1. подати команду меню Tools – Add Procedure

    1. подати команду меню View – Add Procedure

  1. Що є обов’язковим при створенні функції?

    1. привласнити імені функції значення, яке вона повертає

    1. оголосити змінні, що використовуються в функції

    1. привласнити певній змінній значення, яке функція повертає

  1. Які способи використання функції Obch() коректні?

    1. X = Obch(12)+10

    1. Obch(Roz)

    1. lblZ.Caption = str(Obch(Z))+20

    1. Obch(25)

  1. Які заголовки підпрограм є помилковими?

    1. Public Sub Summery(X, Y, Z)

    1. Public Sub txtNaim_Change(Index As Integer)

    1. Public Function Solve(X As Integer)

  1. Оператор MsgBox є . . .

    1. стандартною функцією

    1. стандартною процедурою

    1. процедурою, яка створена у вікні коду

6 Робота з файлами

6.1 Файли довільного доступу

Файл довільного доступу містить записи однакового розміру. Кожний запис може включати поля, в яких вміщуються дані. Наприклад, записи файлу з відомостями про співробітників Employees.txt підприємства можуть вміщувати дані про прізвище та ініціали робітника (поле довжиною 15 байт), освіта (поле у 4 байти). Кожний запис буде мати фіксовану довжину, вміщувати два поля, кожне з яких також має фіксований розмір.

Запис 1

Запис 2

Запис 3 і т.д.

поле 1

поле 2

поле 1

поле 2

поле 1

І

в

а

н

ч

е

н

к

о

М

.

Ф

.

в

и

щ

.

К

р

а

в

ч

е

н

к

о

В

.

Б

.

с

е

р

.

Для доступу до файлу його слід розчинити оператором Open:

Open "FileName" For Random As FileNumber Len = RecordLength

FileName - ім'я файлу, можна задавати повне ім'я файлу з маршрутом пошуку (наприклад, "C:\Data.txt");

Random - визначає, що файл буде розчинено в режимі довільного доступу;

FileNumber - номер файлу, ціле число в діапазоні від 1 до 511, яке визначає номер незайнятого в системі в дану мить файлу, так званий дескриптор файлу;

RecordLength - визначення довжини запису файлу.

Наприклад, щоб розчинити файл Employees.txt у режимі довільного доступу коли відомо, що номер файлу 5 не зайнято ніяким іншим файлом, можна виконати команду:

Open "Employees.txt" For Random As 5 Len = 19

Якщо невідомо, який номер файлу в дану мить є незайнятим, можна скористатися функцією FreeFile, яка повертає номер незайнятого файлу.

При записі, зчитуванні даних у файл послідовного доступу, коли один запис вміщує декілька полів, доцільно використовувати тип - запис. Змінна з типом даних запис буде вміщувати дані, які слід записати у файл, або навпаки приймати дані, що прочитано з файлу. У випадку, коли важко визначити довжину запису при роботі з різними типами даних, можна використовувати функцію Len(), яка повертає довжину змінної.

Наприклад, для роботи з файлом Employees.txt буде використовуватись змінна PZ, яка має тип Person. Тип Person оголошено у вікні модуля так:

Type Person

Priz As String * 15

Osv As String * 4

End Type

Для розчинення файлу Workers.txt можна виконати таку послідовність дій:

DZ = Len(PZ)

VF = FreeFile

Open "Employees.txt" For Random As VF Len = DZ

Якщо файл у поточному каталозі не буде знайдено, то створюється новий файл з ім'ям Employees.txt.

При розчинені, створенні файлу довільного доступу обов’язково існує запис файлу з номером 1. Для визначення загальної кількості записів у файлі можна використовувати функцію FileLen(), яка повертає розмір файлу в байтах. Наприклад, щоб привласнити змінній ZKZ значення, яке відповідає загальній кількості записів у файлі, можна виконати таку дію:

ZKZ = FileLen("Employees.txt") / DZ

У коді програми обов'язково слід перевіряти, щоб звернення до записів файлу було коректним, номер запису, до якого здійснюється звернення, повинен бути у діапазоні від першого до останнього запису файлу.

Для запису даних у файл використовується оператор Put

Put # FileNumber, <номер запису файлу>, <змінна>

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

Наприклад, щоб додати до файлу Employees.txt новий запис про співробітника Матвієнко Л.І. з вищою освітою можна виконати дії:

PZ.Priz = "Матвієнко Л.І."

PZ.Osv = "вищ."

Put #VF, ZKZ + 1, PZ

Зчитування даних з файлу довільного доступу виконується оператором Get:

Get # FileNumber, <номер запису файлу>, <змінна>

Таким чином, можна прочитати будь-який запис файлу в змінну, зазначивши номер запису.

Наприклад, якщо оголосити масив змінних PersZap для зчитування всієї інформації з файлу, можна прочитати дані всього файлу так:

For i = 1 To ZKZ

Get #VF, i, PersZap(i)

Next

При зчитуванні даних з файлу може стати у нагоді функція Eof() (від End of file), яка повертає значення True, якщо досягнуто кінця файлу, і False у зворотному випадку. Прочитати усі записи файлу доки не буде досягнуто кінця файлу можна так:

i = 1

Do While Not EOF(VF)

Get #VF, i, PersZap(i)

txtPriz(i - 1).Text = PersZap(i).Priz

txtOsv(i - 1).Text = PersZap(i).Osv

i = i + 1

Loop

Після виконання операцій з файлом його обов'язково слід зачинити оператором Close:

Close # FileNumber

Знищити записи файлу довільного доступу безпосередньо неможливо. Щоб виконати цю операцію, слід:

  1. Створити тимчасовий файл у форматі, який відповідає формату файлу, що вміщує записи, які треба знищити.

  2. Переписати у тимчасовий файл усі записи, крім тих, що знищуються.

  3. Зачинити файл - джерело даних, знищити його оператором

Kill "FileName"

  1. Зачинити тимчасовий файл, перейменувати його оператором

Name "OldName" As "NewName"

Наприклад, щоб знищити п'ятий запис файлу Employees.txt можна виконати такі дії:

NF1 = FreeFile

Розчиняється файл Employees.txt

Open For "Employees.txt" Random As NF1 Len = 19

NF2 = FreeFile

Створюється тимчасовий файл Employees.tmp

Open "Employees.tmp" For Random As NF1 Len = 19

KZZ = FileLen("Employees.txt") / 19

Визначається кількість записів файлу.

i = 1

n = 1

Do While i <= KZZ

Цикл діє доки і менш або рівно кількості записів файлу

If i <> 5 Then

Якщо обробляється не п'ятий запис файлу, то

Get #NF1, i, PZ

виконується зчитування і-го запису файлу Employees.txt у змінну PZ

Put #NF2, n, PZ

записується n-ий запис у файл Employees.tmp зі змінної PZ

n = n +1

n збільшується на 1

End If

Завершується оператор If

i = i + 1

і збільшується на 1

Loop

кінець циклу - оброблено всі записи файлу Employees.txt

Close #NF1

Зачиняється файл Employees.txt

Kill "Employees.txt"

Знищується файл Employees.txt

Close #NF2

Зачиняється файл Employees.tmp

Name "Employees.tmp" As "Employees.txt"

Перейменовується файл Employees.tmp у Employees.txt