Робота з текстовими файлами, Basic, Програмування, статті

Сергій Міллер

Зовсім недавно в непомню який коференції я бачив запис якогось людини, яка просив, щоб хоч хто-небудь пояснив йому елементарну роботу з файлами … Здавалося б таке просте … Але це просте для тих, хто вже хоч трохи просунувся в програмуванні, а хто це тільки почав? Це ж, дійсно, непрохідний ліс! І я сильно сумніваюся, щоб хто-небудь з інших наших Web-майстрів коли-небудь приділить цього хоч якусь увагу. Тому цим займуся я і спробую в цій статті показати тільки основи.

1.Відкрита файлу для читання інформації з нього.

Отже, щоб безпроблемно працювати з текстовими файлами спочатку їх потрібно відкрити. Робиться це за допомогою оператора Open, Наприклад:



Open
“c:\text.txt” For Input As
#1



Зверніть увагу на режим відкриття файлу – Input (для читання). Тут файл text.txt відкривається для зчитування під номером 1. Увага! Номер файлу – Обов’язковий параметр, і вводити його потрібно завжди! Якщо ваша програма матиме справу не з одним десятком відкритих файлів, то встежити за їх нумерацією буде важкувато. Використовуйте для цього функцію FreeFile. Вона повертає ще не зайнятий номер (від 1 до 511) для файла:



Dim
FileNum
As
Integer

FileNum
= FreeFile

Open
“c:\text.txt” For Input As
FileNum



Так, файл відкрили! Тепер з нього потрібно що-небудь вважати. Оператор Line Input зчитує з відкритого файлу по одному рядку при кожному виклику. Тому для зчитування з файлу потрібно побудувати цикл, який би викликав цей оператор до тих пір, поки не дійшов би до кінця файлу:



‘Цикл виконується, поки кінець файлу не досягнуть

Do
Until EOF(FileNum)

   ‘При кожному виклику оператора Line Input він записує в


  
змінну новою рядок

 

Line Input #FileNum,
змінна

Loop



Закрити відкритий файл можна оператором Close # FileNum. А тепер ось як це має виглядати в практиці:



Dim
FileNum
As Integer

Dim
txt As String

Dim
alltxt
As String

FileNum
= FreeFile

‘Відкриваємо файл у режимі читання

Open
“c:\text.txt” For Input As
FileNum

‘Запускаємо вищезгаданий цикл

Do
Until EOF(FileNum)

‘Зчитуємо рядок з файлу з номером FileNum і кладемо її в

‘Змінну
txt

Line
Input #FileNum, txt

‘Тепер до змінної alltxt додаємо вміст змінної txt –

‘Рядка і vb-константу vbCrLf (Chr (13) + Chr (10)), тому кожен рядок

‘Повинна бути з нового рядка 🙂

alltxt
= alltxt + txt + vbCrLf

Loop

‘Закриваємо файл з номером FileNum

Close
#FileNum

‘Виводимо вміст змінної alltext

MsgBox
alltxt


2.Откритіе файлу для запису інформації в нього.

Записати інформацію в файл ще простіше! Ця операція відрізняється від попередньої тільки тим, що відкрити файл треба в режимі запису:



Open
“c:\text.txt” For Output As
FileNum

‘І замість циклу потрібно вставити оператор Print #, який записує в файл вміст змінної:

Print # FileNum, “Азбука Visual Basic”

або

Print
#FileNum, alltext



Приклад:


Dim
FileNum
As Integer

Dim
txt As String

FileNum
= FreeFile

txt
= “http://members.tripod.de/cmvb”

‘Відкриваємо файл в режимі запису

Open
“c:\text.txt” For Output As
FileNum

Print
#FileNum,
txt

‘Закриваємо файл з номером FileNum

Close
#FileNum



Перевірте вміст файлу.

І ще хочу запропонувати другий спосіб запису інформації в файл – за допомогою API-функції WritePrivateProfileStringByKeyName. Зчитувати ж інформацію потрібно за допомогою API-функції GetPrivateProfileString. Тепер розповім – як все це працює?

1.Создайте стандартний проект.

2.Введіте модуль.

3.Удаліте форму і клікніть двічі по модулю.

4.У розділ General Declarations наступне оголошення двох, вищезгаданих функцій:



Declare
Function GetPrivateProfileString&
Lib _

“kernel32”
Alias “GetPrivateProfileStringA”
(ByVal _

lpszSection$,
ByVal lpszKey$,
ByVal lpszDefault$,
_

ByVal
lpszReturnBuffer$, ByVal
cchReturnBuffer&, _

ByVal
lpszFile$)

‘lpszSection -Ім’я секції

‘lpszKey – Ім’я ключа

‘lpszDefault – Значення, що повертається за замовчуванням, при рядку “”

‘lpszReturnBuffer – Місце для рядка

‘cchReturnBuffer – Розмір (довжина) місця для рядка

‘lpszFile – Ім’я файлу

Declare
Function
WritePrivateProfileStringByKeyName%
Lib _



“kernel32”
Alias “WritePrivateProfileStringA”
(ByVal _

lpApplicationName
As String, ByVal
lpKeyName As String,
_

ByVal
lpString As String,
ByVal lplFileName
As String)

‘lpApplicationName – Ім’я секції

‘lpKeyName – Ім’я ключа

‘lpString – Рядок

‘lplFileName – Ім’я файлу



5.Создайте підпрограму Main – просто введіть Sub Main.

6.В підпрограму Main введіть:



Sub
Main()

‘Створюємо файл test.ini, в ньому заголовок “Main”, ключ “URL” _

і рядок “http://members.tripod.de/cmvb”

Call
WritePrivateProfileStringByKeyName(“Main”,
“URL”, _

“http://members.tripod.de/cmvb”,
“c:\test.ini”)

‘Створюємо файл test.ini, в ньому заголовок “Main”, ключ “eMail” _

і рядок “v1500mk@t-online.de”

Call
WritePrivateProfileStringByKeyName(“Main”, “eMail”, _

“v1500mk@t-online.de”,
“c:\test.ini”)

End
Sub



При запуск проекту на диску С: відразу буде створений файл Test.ini з наступним вмістом:



[Main]

URL=http://members.tripod.de/cmvb

eMail=v1500mk@t-online.de



8:-O!!! Чи не правда, просто? А вважати це трохи складніше. Отже, файл створений, тепер поробуем вважати інформацію звідти. Видаліть все, що знаходиться між рядками “Sub Main () “і”End Sub “. Впишіть наступне:



Sub
Main()

‘Створюємо змінну, в яку буде передаватися рядок

Dim
MyString As String

‘”Набиваємо” її пробілами

MyString
= Space(100)

‘Відкривається файл файл test.ini, і в змінну MyString _

записується рядок із заголовка “Main”, ключа “URL”

Call
GetPrivateProfileString(“Main”, “URL”, “”, MyString, _

Len(MyString),
“C:\test.ini”)

‘Виводиться на екран вміст змінної MyString

MsgBox
MyString

‘Відкривається файл файл test.ini, і в змінну MyString _

записується рядок із заголовка “Main”, ключа “eMail”

Call
GetPrivateProfileString(“Main”, “eMail”, “”, MyString, _

Len(MyString),
“C:\test.ini”)

‘Виводиться на екран вміст змінної MyString

MsgBox
MyString

End
Sub



 

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*