Редагування файлів послідовного доступу.


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

Читання з файла.

Читання даних з файла, відкритого для послідовного доступу, здійснюється за допомогою оператора Input, що має кілька різновидів:

Input # – прочитує послідовність символів, записаних за допомогою оператора Write #;

Line Input # – прочитує один рядок;

Input$ – прочитує певну кількість символів.

Перед читанням треба відкрити файл за допомогою оператора Open...For.

Наприклад:

Open "C:\Text.Txt" For Input As #1

Оператор Input має наступний синтаксис:

Input #нф, <Список Змінних>

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

<Список_Змінних> – це записані через кому змінні. В кожному текстовому рядку файла кількість та тип змінних повинно збігатись з кількістю та типом значень в <Списку Значень> оператора Write.

Оператор Line Input має наступний синтаксис:

Line Input # нф, <3мінна>

Змінна – змінна типу String або Variant. Результатом роботи оператора Line Input є присвоєння <3мінній> значення всього текстового рядка файла.

Читання із текстового файла виконується звичайно циклічно за допомогою оператора циклу з умовою Do While...Loop або Do Until...Loop. Умовою закінчення циклу є спроба прочитати дані після читання останнього текстового рядка. Ця спроба приводиіь до того, що після досягнення кінця файла значення функції EOF(нф) буде True.

Функція Input$ – це функція двох аргументів:

Input$(Кількість_Символів, нф)

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

Другий аргумент – ідентифікатор файла, відкритого для читання.

Повертаєме значення – прочитаний текст в вигляді символьного рядка.

Цю функцію використовують для одночасного читання всього текстового файла та розміщення його в текстовому полі екранної форми. Для цього необхідно визначити довжину файла в байтах за допомогою функції LOF(нф).

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

Варіант 1

Do Until EOF (1)

Line Input #1, String

Text= Text & String

Loop

Варіант 2

Text=Input$(LOF(1),1)

Close #1

Обидва варіанти приводять до однакового результату.

Приклад створення і використання файла з послідовним доступом.

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

Використаємо для рішення цієї задачі файл з послідовним доступом. Розмістимо на Формі 1, яка використовувалась в додатку «Покупки» ще три командні кнопки, яким дамо імена Записати, Доповнити, Показати та змінимо відповідно написи на них.

Щигликам на цих кнопках ставимо їм в відповідність процедури Записати_Click(), Доповнити_Click, Показати _Click. Відображати вміст файлу з записами можна було б на окрему форму, додану з цією ціллю до проекту, але якщо записів багато, то вони можуть на ній не розміститись. Тому повний список проданого товару будем виводити в Список4, в якому при потребі виникне смуга прокручування.

Private Sub Обчислити_Click()

Dim Код As Integer, Ціна As Currency, S As Single, i As Integer

S=0: ‘ Загальна вартість

i=0 ‘ номер покупки

Do While MsgBox(“Будуть ще покупки?”,vbQuestion+_

vbYesNo, “Покупки”)=vbYes

i=i+1

Код=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Ціна=CCur(InputBox(“Введіть ціну”, i & “ –го товару”))

Кількість=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Список1. AddItem Код

Список2. AddItem Ціна

Список3. AddItem Кількість

S=S+Ціна*Кількість

Loop

MsgBox “Вартість всіх покупок “ & Format( S, “0.00”) & “Грн.”

End Sub

 

Private Sub Записати_Click()

Open "D:\Продажі.txt" For Output As #1

For i = 0 To Список1.ListCount - 1

Write #1, Список1.List(i), Список2.List(i), Список3.List(i)

Next i

Close #1

End Sub

 

Private Sub Додати_Click()

Open "D:\Продажі.txt" For Append As #1

For i = 0 To Список1.ListCount - 1

Write #1, Список1.List(i), Список2.List(i), Список3.List(i)

Next i

Close #1

End Sub

 

Private Sub Показати_Click()

Dim Код As String * 4, Ціна As String * 15

Dim Кількість As String * 15

Open "D:\Продажі.txt" For Input As #1

S = 0

Do While Not EOF(1)

Input #1, Код, Ціна, Кількість

Список4.AddItem Код & " " & Ціна & " " & Кількість

S = S +Val( Ціна) *Val( Кількість)

Loop

Close #1

Список4.AddItem ""

Список4.AddItem ""

Список4.AddItem "Всього на " & S & " Грн"

End Sub

 

Для того, щоб змінні, які відображуються в списку 4 мали однакову довжину, що необхідно для вирівнювання інформації в стовпчиках при її відображені, ми використали оператор Dim Ім’я As String*N. Він вказує, що VB повинен створити рядкову змінну фіксованої довжини (довжиною N символів).

На рисунках 7.1 та 7.2 відображені вікна з результатами роботи додатка.

 

Рисунок 7.1. Результат роботи процедури “Обчислити_Click Рисунок 7.2. Результат роботи процедури “Показати_ Click”

 

7.3. ОБРОБКА ФАЙЛОВИХ СТРУКТУР ДАНИХ З

ДОВІЛЬНИМ ДОСТУПОМ



Дата добавления: 2021-11-16; просмотров: 278;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.