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

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

Для читання даних з файлу застосовуються оператори Input і LineInput. Першим аргументом кожного з цих операторів є символ (#) і файлове число, потім слідує кома, що відділяє покажчик файлу, що підлягає чітанню. Далі слідують аргументы— імена змінних, яким привласнюються прочитані з файлу значення.

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

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

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

Оператор LineInput є доповненням оператора Input. Оператор LineInput привласнює одному строковому аргументу всі символи, виявлені в одиничному рядку файлу. Строковому аргументу — зміній привласнюються всі символи, включаючи початкові пропуски, коми і лапки. Оператор LineInput застосовується для читання в програму точної копії вмісту рядка файлу. Єдиними символами, що не пересилаються оператором LineInput, є символи повернення каретки і перекладу рядка, що розглядаються як кінець рядка.

Наприклад, на панелі Immediate використовуємо операторів Input і LineInput для читання вмісту текстового файлу Exempl2.txt:

Число, змальоване тут, дорівнює 12.643 і так далі

“Число, змальоване тут, дорівнює 12.643 і так далі”

“Число, змальоване тут, дорівнює” 12.643 і так далі”

“Число, змальоване тут, дорівнює” 12.643 і так далі”

234 23 456

Оператои

Їх результат роботи

Open "SCRATCH.TXT" For Input As 100

Оператор відкриває файл

Input #100, B$, С$, D$

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

Print B$

Число

Print C$

змальоване тут

Print D$

рівне 12.643 і так далі

Input #100, B$

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

Print B$

Число, изображенное здесь, равно 12.643 и т.д.

Input #100, B$, а

Оператор читає третій рядок файлу в строкову і числову змінні:

Print B$

Число, змальоване тут, рівне

Print а

12.643

Line Input #100, B$

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

Print B$

"Число, змальоване тут, дорівнює" 12.643 і так далі

Input #100, е, f, g

Оператор читає п'ятий рядок файлу в три числові змінні (пропуски між числами будуть сприйняті як роздільники):

Print e

Print f

Print g

234

23

456

Close #100

Оператор закриває файл

Розглянемо простий приклад зчитування даних з файлу послідовного доступу, що розташованний на диску Е: (e:/pr1.txt) та був утворений в наступному прикладі. Значення х та у зчитані з файлу запишемо на поточному листі в стовпчиках А та В.

Sub pr1_2()

Open "e:/pr1.txt" For Input As 1

Dim x As Integer, i As Integer, a1 As String, b As String, a2 As String, a, c

Input #1, a1, b, a2

Cells(1, 1).Value = a1

Cells(1, 2).Value = b

Cells(1, 3).Value = a2

For i = 2 To 11

Input #1, a, b, c

Cells(i, 1).Value = a

Cells(i, 2).Value = b

Cells(i, 3).Value = c

Next i

Close #1

End Sub

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