ТОП 10:

Підпрограм, вікон повідомлень



Як приклад розглядається програма, яка дозволить ввести данні в масив записів з полями для збереження прізвищ та ініціалів співробітників, сум нарахованої заробітної плати. При введенні значень нарахованої заробітної плати програма повинна перевіряти значення і, якщо введено від’ємне число видавати повідомлення та знищувати уміст текстового поля. Командами меню Вікно користувач повинен мати змогу Очистити таблицю, підсумок або таблицю і підсумок, завершити роботу програми. Режим меню Розрахунок дає змогу визначити суму нарахування з фонду заробітної плати у пенсійний фонд (32% від загальної суми нарахувань), у фонд соціального страхування (4,4% від загальної суми нарахувань), у фонд зайнятості (0,5% від загальної суми нарахувань).

 

Рисунок 5.1 - Види вікна програми – приклада

 

На етапі візуальної розробки програми слід створити форму, розташувати на неї елементи управління, визначити їх властивості у відповідності з даними таблиці:

Об’єкт Властивість Значення
Форма (Form) Name frmMain
Caption Виплати з фонду заробітної плати
Font Times New Roman, 12 п., напівжирний
Етикетка (Label) Name lblZag
Caption Введіть дані для розрахунку:
Font курсив
Етикетка (Label) Name lblNamе
Caption П І Б
Етикетка (Label) Name lblN
Caption Нараховано
Етикетка (Label) Name lblRez
Caption “_”
Масив текстових полів (TextBox) Name txtName(0¸4)
Text “_”
Index 0¸4
Масив текстових полів (TextBox) Name txtN(0¸4)
Text “_”
Index 0¸4

 


Далі слід розчинити вікно редактору меню командою ToolsMenu Editor, створити таке меню програми:

Caption Name Структура меню
Вікно mnuWind Вікно
Очистка mnuClear . . . .Очистка
таблиця mnuTabl . . . . . . . . таблиця
підсумок mnuPid . . . . . . . . підсумок
таблиця та підсумок mnuTablPid . . . . . . . . таблиця та підсумок
Вихід mnuExit . . . .Вихід
Розрахунок mnuRoz Розрахунок
Пенсійний фонд mnuPF . . . .Пенсійний фонд
Фонд соціального страхування mnuSS . . . .Фонд соціального страхування
Фонд зайнятості mnuFZ . . . .Фонд зайнятості

 

Щоб накопичити дані в масиві, організувати перевірку даних, що вводяться, на невід’ємність, масив слід оголосити, створити таку процедуру.

Дані в рядку коду Коментар
Dim Z(5) Оголошення в розділі General Declaration масиву Z, у якому 5 елементів.
Private Sub txtN_Change(Index As Integer) Заголовок процедури, яка виконується коли зміниться вміст будь-якого елементу масиву txtN, відбудеться подія Change. Процедура приймає значення 1-го параметра – значення властивості Index конкретного елементу, що змінився.
If Val(txtN(Index).Text) < 0 Then Якщо властивість Text елементу масиву txtN з індексом Index менш ніж 0, то
Povid Index виконується процедура Povid, яка приймає значення змінної Index як фактичний параметр
Else інакше
Z(Index) = Val(txtN(Index).Text) у відповідний елемент масиву змінних Z записується значення нарахованої заробітної плати співробітникові, яке попередньо перетворюється функцією Val на числове
End If Кінець оператору If
End Sub Кінець процедури

 

Для створення нової процедури Povid, яка повинна виводити повідомлення у випадку, якщо в полі нарахувань введено від’ємне число, слід перебуваючи у вікні коду виконати команду меню ToolsAdd Procedure. У вікні діалогу треба ввести ім’я процедури, обрати перемикачі Sub, Public. До коду програми буде добавлено заголовок і останній рядок процедури, далі слід визначити параметри процедури і її вміст як у таблиці:

Дані в рядку коду Коментар
Public Sub Povid(I As Integer) Параметром процедури є змінна I типу Integer
MsgBox "У чарунку введено від’ємне значення!", 0 + 64, "Увага!" Оператором MsgBox виводиться таке вікно повідомлення:
 
txtN(I).Text = " " Після натиснення на кнопці Ок буде знищено вміст елементу масиву тестових полів txtN з індексом, який буде прийнято як фактичний параметр процедури
End Sub Кінець процедури

Наступним кроком створення програми може бути створення процедур, які пов’язані з командами режиму меню ВікноОчистити:таблицю, підсумокаботаблицю і підсумок, Вихід.

Дані в рядку коду Коментар
Private Sub mnuExit_Click() Процедура завершує роботу програми, якщо в меню обрано команду Вихід.
End
End Sub
Public Sub ClearTabl() Заголовок процедури ClearTabl, яку слід створити для знищення вмісту елементів масивів текстових полів командою Tools – Add Procedure.
For I = 0 To 4 Для і, що змінюється від 0 до 4
Z(I) = 0 елементу масиву змінних Z привласнюється значення 0
txtName(I).Text = " " уміст і-го елементу текстових полів txtName для введення ПІП знищується
txtN(I).Text = " " уміст і-го елементу текстових полів txtN для введення нарахованих сум заробітної плати знищується
Next Кінець циклу
End Sub Кінець процедури
Public Sub ClearlPid() Заголовок процедури ClearlPid, яку слід створити для знищення вмісту етикетки для виведення результатів командою Tools – Add Procedure.
lblRez.Caption = " " Знищення вмісту етикетки lblRez.
End Sub Кінець процедури
Private Sub mnuTabl_Click() Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – таблицю.
ClearTabl Виклик процедури ClearTabl для знищення вмісту таблиці.
End Sub Кінець процедури
Private Sub mnuPid_Click() Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – підсумок.
ClealPid Виклик процедури ClealPidдля знищення вмісту етикетки з підсумком.
End Sub Кінець процедури
Private Sub mnuTablPid_Click() Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – таблицю і підсумок.
ClearTabl Виклик процедури ClearTabl для знищення вмісту таблиці.
ClealPid Виклик процедури ClealPidдля знищення вмісту етикетки з підсумком.
End Sub Кінець процедури

Для виконання розрахунків пропонується створити функцію RozSum командою меню Tools – Add Procedure, у вікні діалогу команди слід ввести ім’я функції, обрати перемикачі Function, Public. Далі треба створити коди процедур, які пов’язані з командами режиму Розрахунок.

Дані в рядку коду Коментар
Public Function RozSum(V As Single) Функція RozSum приймає один параметр – число типу Single, яке буде розміщено в змінній V. Змінна V буде вміщувати відсоток для розрахунку певного виду виплат з фонду соціального страхування.
RozSum = 0 Імені функції привласнюється значення 0.
For I = 0 To 4 Для і, що змінюється від 0 до 4,
RozSum = RozSum + Z(I) Функції RozSum привласнюється значення – RozSum + значення і-го елементу масиву змінних Z
Next Кінець циклу.
RozSum = RozSum * V Імені функції привласнюється значення – RozSum* V.
End Function Кінець функції.
Private Sub mnuPF_Click() Процедуру буде виконано, якщо в меню обрано команду Розрахунок – Пенсійний фонд.
lblRez.Caption = "Нараховано в пенсійний фонд " + Str(RozSum(0.32)) + " грн." Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в пенсійний фонд "; результату, який повертає функція RozSum(0.32) для аргументу 0,32, що перетворено до символьного типу функцією Str(); рядка символів " грн.".
End Sub Кінець процедури.

 


 

Private Sub mnuSS_Click() Процедуру буде виконано, якщо в меню обрано команду Розрахунок –Фонд соціального страхування.
lblRez.Caption = "Нараховано в фонд соціального страхування " + Str(RozSum(0.044)) + " грн." Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в фонд соціального страхування "; результату, який повертає функція RozSum(0.044) для аргументу 0,044, що перетворено до символьного типу функцією Str(); рядка символів " грн.".
End Sub Кінець процедури.
Private Sub mnuZan_Click() Процедуру буде виконано, якщо в меню обрано команду Розрахунок –Фонд зайнятості.
lblRez.Caption = "Нараховано в фонд зайнятості " + Str(RozSum(0.005)) + " грн." Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в фонд зайнятості "; результату, який повертає функція RozSum(0.005) для аргументу 0,005, що перетворено до символьного типу функцією Str(); рядка символів " грн.".
End Sub Кінець процедури.

 

5.3 Контрольні запитання

1. Коли слід створювати підпрограми?

2. Чим відрізняються підпрограми – процедури від підпрограм – функцій?

3. Як виконати процедуру?

4. Як можна використовувати результат, що повертає функція?

5. Що визначає параметр CodKey процедури MsgBox, функції MsgBox()?

6. Для чого використовується параметр CodIcon у процедурі MsgBox, функції MsgBox()?

7. Як проаналізувати обрану користувачем кнопку у вікні повідомлення, в залежності від виробу виконати різні дії?

 

5.4 Практичні завдання

Завдання

Розробити програму за індивідуальним варіантом. При розробці програми слід створити форму із застосування масивів елементів управління, меню програми, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форму та код програми.

Звіт про роботу повинен вміщувати:

- блок-схему алгоритмічного процесу розв’язання задачі;

- роздруковану форму програми;

- роздрукований код програми.

 


Варіант №1

Створити програму, у ході виконання якої можна ввести дані про шість підприємств торгівлі: найменування, середньомісячний товарообіг, середньомісячні витрати обігу, кількість працюючих, торгова площа.

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

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №2

Створити програму, у ході виконання якої можна ввести дані про п'ять областей України: найменування, чисельність населення, середньомісячний обсяг виробництва, кількість вузів, кількість театрів.

Програма повинна дозволити обрати з таблиці мінімальні значення кожного з показників (чисельність населення, середньомісячний обсяг виробництва, кількість вузів, кількість театрів), виводити назву регіону, у якому відповідний показник мінімальний.

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №3

Створити програму, у ході виконання якої можна ввести дані про п'ять міст Донецької області: найменування, середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень.

Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень), виводити місто, у якому відповідний показник максимальний.

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №4

Створити програму, у ході виконання якої можна ввести дані про найменування, покупну ціну, кількість реалізованого товару.

При зміні значення хоча б одного з полів (ціна або кількість) програма повинна розраховувати і виводити у формі значення:

сума покупна (ціна покупки * кількість);

ціна продажу покупцю (10% торгової надбавки);

сума реалізації покупцю (ціна продажу * кількість);

ціна для постійних покупців (8% торгової надбавки);

сума реалізації постійним покупцям (ціна продажу для постійних покупців * кількість).

Меню програми повинне містити режими «Очищення», «Вихід».

Варіант №5

Створити програму, у ході виконання якої можна ввести дані: ПІБ співробітника, нараховано за рік, стаж роботи, кількість днів, пропущених через хворобу.

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

основна сума премії (10% від суми нарахованої заробітної плати за рік для співробітників, стаж роботи яких менш 5 років, 15% від суми нарахованої для співробітників, стаж роботи яких менш 10 років і більш 5 років, 20% для співробітників, що відробили більш 10 років);

додаткова сума премії: 100 грн., якщо через хворобу пропущено менш 5 днів у році, 50 грн. у тому випадку, якщо пропущено більш 5 але менш 15 днів;

загальна сума премії.

Меню програми повинне містити режими «Очищення», «Вихід».

Варіант №6

Створити програму, у ході виконання якої можна ввести дані: найменування товару, сума фактичного залишку товару на складі, сума залишку за даними обліку.

При зміні значення хоча б одного з полів (фактична або облікова суми) програма повинна розраховувати і виводити у формі значення:

сума відхилення (факт – облікові дані);

відсоток відхилення (сума відхилення / облікові дані * 100);

розмір природного збитку, якщо відхилення негативне (нестача товару) – 2% від суми фактичного залишку товару;

сума відхилення з урахуванням природного збитку (сума відхилення + розмір природного збитку).

Меню програми повинне містити режими «Очищення», «Вихід».

 

Варіант №7

Створити програму, у ході виконання якої можна ввести дані про шість підприємств торгівлі: найменування, торгова площа, середньомісячний товарообіг, середньомісячні витрати, середньомісячний прибуток, вартість основних засобів.

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

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 


Варіант №8

Створити програму, у ході виконання якої можна ввести дані про п'ять областей України: найменування, середньомісячний обсяг виробництва, чисельність працездатного населення, загальна кількість населення, кількість виробничих підприємств.

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

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №9

Створити програму, у ході виконання якої можна ввести значення показників поточного року по п'яти містах Донецької області: найменування, середньомісячний обсяг виробництва, середньомісячний товарообіг роздрібної торгівлі, чисельність населення, середні доходи населення.

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

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №10

Створити програму, у ході виконання якої можна ввести дані про найменування, покупну ціну, кількість реалізованого товару, відсоток торгової надбавки.

При зміні значення хоча б одного з полів (ціна, кількість або відсоток надбавки) програма повинна розраховувати і виводити у формі значення:

сума покупна (ціна покупки * кількість);

ціна продажу покупцю з урахуванням торгової надбавки;

сума реалізації покупцю (ціна продажу * кількість);

ціна зі знижкою (знижка складає 3%);

сума реалізації зі знижкою.

Меню програми повинне містити режими «Очищення», «Вихід».

 

Варіант №11

Створити програму, у ході виконання якої можна ввести дані: найменування постачальника, суму фактичного надходження товару від постачальника, суму постачання за договором.

При зміні значення хоча б одного з полів (фактична або договірна суми) програма повинна розраховувати і виводити у формі значення:

сума недовиконання договору;

сума перевиконання договору;

відсоток відхилення (сума відхилення / договір * 100).

Меню програми повинне містити режими «Очищення», «Вихід».

 

Варіант №12

Створити програму, у ході виконання якої можна ввести дані про шість шкіл: найменування, чисельність молодших класів, чисельність старших класів, чисельність викладачів, площа навчальних приміщень.

Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (чисельність молодших класів, чисельність старших класів, чисельність викладачів, площа навчальних приміщень), виводити назву школи, у якій відповідний показник максимальний.

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №13

Створити програму, у ході виконання якої можна ввести дані про п'ять держав СНД: найменування, чисельність населення, річний обсяг виробництва, кількість вузів, кількість театрів.

Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (чисельність населення, річний обсяг виробництва, кількість вузів, кількість театрів), виводити назву країни, у якій відповідний показник максимальний.

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №14

Створити програму, у ході виконання якої можна ввести дані про районів міста: найменування, середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень, кількість дитячих закладів.

Програма повинна дозволити обрати з таблиці мінімальні значення кожного з показників (середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень, кількість дитячих закладів), виводити назву району, у якому відповідний показник мінімальний.

Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».

 

Варіант №15

Створити програму, у ході виконання якої можна ввести дані: найменування покупця, суму фактичної реалізації товару покупцю, суму реалізації згідно з договором.

При зміні значення хоча б одного з полів (фактична або договірна суми) програма повинна розраховувати і виводити у формі значення:

сума недовиконання договору;

сума перевиконання договору;

відсоток відхилення (сума відхилення / договір * 100).

Меню програми повинне містити режими «Очищення», «Вихід».

 

Тест

  Відповідь Вміє Не вміє
1) Підпрограма-функція призначена для . . .  
a) призначені для обчислення деякого параметру    
b) для виконання деякої послідовності дій    
c) для виведення повідомлення    
2) Щоб створити підпрограму-слід . . .  
a) розчинити вікно коду, ввести заголовок процедури    
b) подати команду меню Tools – Add Procedure    
c) подати команду меню View – Add Procedure    
3) Що є обов’язковим при створенні функції?  
a) привласнити імені функції значення, яке вона повертає    
b) оголосити змінні, що використовуються в функції    
c) привласнити певній змінній значення, яке функція повертає    
4) Які способи використання функції Obch() коректні?  
a) X = Obch(12)+10    
b) Obch(Roz)    
c) lblZ.Caption = str(Obch(Z))+20    
d) Obch(25)    
5) Які заголовки підпрограм є помилковими?  
a) Public Sub Summery(X, Y, Z)    
b) Public Sub txtNaim_Change(Index As Integer)    
c) Public Function Solve(X As Integer)    
6) Оператор MsgBox є . . .  
a) стандартною функцією    
b) стандартною процедурою    
c) процедурою, яка створена у вікні коду    

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

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

Файл довільного доступу містить записи однакового розміру. Кожний запис може включати поля, в яких вміщуються дані. Наприклад, записи файлу з відомостями про співробітників 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"

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

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

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

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

Розчинити файл послідовного доступу можна в одному з трьох режимів:

1) для введення даних Input - режим зчитування даних з файлу;

2) для виведення Output - вивід тексту в файл, причому попередній уміст файлу втрачається;

3) для приєднання Append - режим, який дає змогу додати нові рядки у кінець файлу.

Щоб розчинити файл, слід виконати команду:

Open "FileName" For Mode As FileNumber

FileName - режим доступу до файлу.

Використовуючи оператор Print, можна записувати один або декілька символів за одну операцію запису, причому до файлу додається новий текстовий рядок.

Print #FileNumber, <змінна або константа> [,<змінна або константа> …]

Оператор Write дає змогу записати один або декілька символів за одну операцію запису, до файлу буде додано новий рядок.

Write #FileNumber, <змінна або константа> [,<змінна або константа> …]

Оператор Write відрізняється від оператору Print тим, що форматує дані при запису так

Тип поля Форматування
Текстове у лапках
Числове без форматування
Дата універсальний формат дати

Наприклад, якщо виконати наступний фрагмент коду програми, буде створено файл Data.txt.

Date = #10/06/2000#

FN = FreeFile

Open "C:\Data.txt" For Output As FN

Write #FN, "Oдин", FN, Date

Print #FN, "Два", FN, Date

Уміст файлу Data.txt буде таким:

"Oдин",1,#2000-10-06#

Два 1 06.10.00

Оператор Input зчитує повний рядок з файлу і розміщує його в одну або декілька змінних.

Input #FileNumber, <змінна > [,<змінна> …]

Якщо запис файлу створено оператором Print, дані можна прочитати як один рядок у деяку змінну. У випадку, коли дані було записано оператором Write, кожну складову запису можна прочитати у окрему змінну для подальшого використання. Причому не слід забувати, що прочитані дані будуть текстового типу.

Зчитування даних з файлу Data.txt можна виконати, наприклад, так:

Open "C:\Data.txt" For Input As FN

Input #FN, X, Y, Z

lblX.Caption = X

lblY.Caption = Y

lblZ.Caption = Z

Input #FN, M

lblM.Caption = M

У результаті виконання коду, значення властивості Caption об'єктів буде таким:

об'єкт X: Oдин;

об'єкт Y: 1;

об'єкт Z: 2000-10-06;

об'єкт M: Два 1 06.10.00.

Після виконання операцій з файлами послідовного доступу, їх, як і файли довільного доступу, обов'язково зачинити оператором Close.

 

Бінарні файли

Бінарні файли - це файли, у яких можуть утримуватися спеціальні символи, що не зустрічаються в текстових файлах. Уміст бінарного файлу - це набір символів, кожний з яких можна отримати окремо. До бінарних файлів належать файли, що виконуються, драйвери, шрифти і т.д.

Бінарний файл можна розглядати як файл довільного доступу, кожний запис якого дорівнює 1 байту. У режимі бінарного доступу можна розчинити будь-який файл, але прийдеться працювати з кожним байтом цього файлу окремо.

Розчинити файл можна командою:

Open "FileName" For Binary As FileNumber

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

 







Последнее изменение этой страницы: 2016-08-12; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.234.244.18 (0.039 с.)