Шаг 16 - Чтение и запись текстовых файлов

Наверно можно смело утверждать, что умение читать и записывать информацию в текстовый файл это основа импорта и экспорта :-) Практически любая серьезная программа хранящая информацию позволяет сохранить её в текстовом формате, какое бы он расширение не имел. Открываются файлы командой Open.

Sub Test()
	Open "c:\1.txt" For Input As #1
	Close #1
End Sub

Команда Open может открывать для чтения Input и для записи Output. Цифра после as это идентификатор файла. На основании его производится чтение и запись файла.

Следующий пример демонстрирует запись и чтение файла

Sub Test()
	Open "c:\1.txt" For Output As #1
	Print #1, "Hello File"
	Close #1

	Open "c:\1.txt" For Input As #1
	Dim s As String
	Input #1, s
	MsgBox s
	Close #1
End Sub

Как видите, для записи можно использовать Print, а для чтения Input воспользовавшись идентификатором открытого файла. Естественно здесь свои тонкости работы. Вот, если Вы запишите такую строку:

......
Print #1, "Hello , File"
......

То оператор Input #1 прочитает только Hello и все. Запятая воспринимается как разделитеть. И это правильно. Есть форматы текстовых файлов когда числа разделены запятой. В коде ниже:

......
Input #1, s
MsgBox s
Input #1, s
MsgBox s
.....

Последовательно выведутся надписи Hello и File, но с этим можно бороться оператором Line Input.

Sub Test()
	Open "c:\1.txt" For Output As #1
	Print #1, "Hello , File"
	Close #1

	Open "c:\1.txt" For Input As #1
	Dim s As String
	Line Input #1, s
	MsgBox s
	Close #1
End Sub

Этот код прочитает строку целиком. Следом возникает важный вопрос, а как узнать конец файла ? Для этого есть функция EOF(идентификатор), которая позволяет вам определить конец файла.

Sub Test()
Open "c:\1.txt" For Output As #1
	Print #1, "Hello , File"
Close #1
Open "c:\1.txt" For Input As #1
	Dim s As String
	While Not EOF(1)
		Input #1, s
		MsgBox s
	Wend 
Close #1
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.