Vb - робота з файлами

Ще одна моя старенька статейка на тему роботи з текстовими файлами засобами Visual Basic 6.0.

У даній статті мова піде про роботу з текстовими файлами засобами Visual Basic.

дескриптор файлу

Для роботи з файлами операційна система використовує канали введення / виводу, тобто кожен відкритий файл має свій номер.

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

RangeNumber -необязательний параметр, який дозволяє визначити діапазон значень вільних каналів, якщо RangeNumber = 0 (за замовчуванням), то повертається номер каналу з діапазону 1 - 255, а якщо 1, то з діапазону 256 - 511.

MyFile = FreeFile 'Перемінної MyFile присвоєно вільний канал і тепер її можна використовувати для роботи з файлами

Робота з текстовими файлами

Найбільш часто доводиться зустрічатися з текстовими файлами. Текстові файли складаються з набору символів ASCII (American Standard Code for Information Interchange - Американський стандартний код для обміну інформацією).

Перш ніж почати записувати / зчитувати дані, файл необхідно відкрити, робиться це за допомогою оператора Open (Ім'я_файлу) For [Input | Output | Append] As # Номер_файла. де:

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

Output - для запису, якщо файл не існує, то він буде створений, а якщо файл існує, то він буде перезаписаний;

Append - для додавання, якщо файл не існує то він буде створений, а якщо файл існує, то дані будуть додаватися в кінець файлу.

Наприклад, якщо треба вважати перший рядок з якого-небудь файлу в змінну S, то код буде таким:

Dim MyFile 'Оголошуємо змінну для вільного файлу

Dim S As String 'Змінна для зберігання лічених даних

MyFile = FreeFile 'Надаємо вільний канал, для роботи з файлами

Open ( "C: TEST.txt") For Input As #MyFile 'Відкриваємо файл TEST.TXT для читання

Line Input #MyFile, S 'Прочитуємо перший рядок з файлу TEST.TXT в змінну S

Close #MyFile 'Закриваємо файл

Якщо, наприклад, треба рахувати не першу, а п'ятий рядок, то код буде трохи інший:

Dim MyFile 'Оголошуємо змінну для вільного файлу

Dim i As Integer 'Змінна для циклу

Dim tS As String 'Змінна для зчитування рядків

Dim S As String 'Змінна для зберігання остаточних даних

MyFile = FreeFile 'Надаємо вільний канал, для роботи з файлами

Open ( "C: TEST.txt") For Input As #MyFile 'Відкриваємо файл TEST.TXT для читання

Line Input #MyFile, tS 'Читаємо файл TEST.TXT через підрядник

If i => 5 Then S = tS 'Якщо п'ятий рядок, то запам'ятовуємо її в змінну S

Close #MyFile 'Закриваємо файл

А якщо треба вважати всі дані з файлу, то:

Dim MyFile 'Оголошуємо змінну для вільного файлу

Dim S As String 'Змінна для зберігання лічених даних

MyFile = FreeFile 'Надаємо вільний канал, для роботи з файлами

Open ( "C: TEST.txt") For Input As #MyFile 'Відкриваємо файл TEST.TXT для читання

S = Input $ (LOG (1), 1) 'Прочитуємо весь файл в змінну S

Close #MyFile 'Закриваємо файл

Для запису в файл існують оператори Print # Номер_файла. Дані і Write # Номер_файла. Дані. Відрізняє ці оператори тільки те, що Write записує дані в лапках, а Print без лапок.

Нижче наступний код створить на диску C: новий файл TEST.TXT і запише в нього два рядки, першу без лапок, а другу в лапках:

Dim MyFile 'Оголошуємо змінну для вільного файлу

MyFile = FreeFile 'Надаємо вільний канал, для роботи з файлами

Open ( "C: TEST.txt") For Output As #MyFile 'Відкриваємо файл TEST.TXT для запису

Print #MyFile, "Цей рядок записана оператором Print, вона без лапок ..."

Write #MyFile, "Цей рядок записана оператором Write, вона в лапках ..."

Close #MyFile 'Закриваємо файл

Ось власне і все. Як ви вже напевно зрозуміли, для закриття файлу служить оператор Close # Номер_файла. при цьому, # Номер_файла вказувати не обов'язково.

чи можна з допомогою цього коду допісовать текст в кінець файлу, а не прати попередній і писати вказаний?

Можна, для цього потрібно використовувати ключове слово Append:

Dim MyFile As Long
MyFile = FreeFile
Open ( "C: TEST.txt") For Append As #MyFile
Print #MyFile, "test1"
Write #MyFile, "test2"
Close #MyFile

Dim MyFile As Long
MyFile = FreeFile
Open ( "C: TEST.txt") For Append As #MyFile
Print #MyFile, "Привіт"; vbNewLine; "Вітання"
Close #MyFile


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

Print #MyFile, "Прівет1"
Print #MyFile, "Прівет2"
Print #MyFile, "Прівет3"
Print #MyFile, "Прівет4"
Print #MyFile, "Прівет5"
Print #MyFile, "Прівет6"
Print #MyFile, "Прівет7"
або, беремо TextBox, у якого властивість Multiline = True:
Print #MyFile, TextBox1.Text

Привіт Олексій!
У мене для Вас таке питання.
Завдання така.
Данна текст треба розділити його по словам.
Наприклад: Ласкаво просимо на мій сайт.
Програма повинна вивести:
Ласкаво
просимо
на
мій
сайт.

Спасибо заранее за допомога.

Dim i As Integer
Dim arr ()
arr = Split ( "Ласкаво просимо на мій сайт.")

For i = 0 To UBound (arr) - 1
Print arr (i)
Next i

зовсім забув, функція Split ще може приймати другий параметр, який вказує сиволов - роздільник, наприклад:

Dim arr ()
arr = Split ( "Превед, медвед!", "д")


данни приклад поверне масив:

У мене таке питання.

Я вмію додавати свій текст в кінець файлу (наприклад в * .exe)
відкриваючи його блокнотом мій текст видно в кінці.
Як видалити свій текст (в кінці файлу), не вбивши при цьому сам екзешник.
Скільки не пробував, додаток ламається. (

Схожі статті