Ще одна моя старенька статейка на тему роботи з текстовими файлами засобами 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)
відкриваючи його блокнотом мій текст видно в кінці.
Як видалити свій текст (в кінці файлу), не вбивши при цьому сам екзешник.
Скільки не пробував, додаток ламається. (