Visual Basic 6. Руководство разработчика


Свойства объекта TextStream


Кроме перечисленных методов, объект TextStream имеет свойства, позволяющие определить местоположение указателя в текущем TextStream.

AtEndOfLine. Это свойство только для чтения. Возвращает значение True, если файловый указатель находится в конце строки объекта TextStream, в противном случае возвращается значение False. Свойство AtEndOfLine применимо к файлам, открытым для чтения. Позволяет организовать цикл посимвольного считывания строки из файла.

Do While TStream.AtEndOfLine = False

newChar = TStream.Read(1)

{обработка newChar}

Loop

Этот цикл считывает и обрабатывает символы из файла, заданного объектом TStream, пока не будет достигнут конец текущей строки.

AtEndOfStream.

Свойство только для чтения, возвращающее значение True, если указатель файла достиг конца объекта TextStream. Это свойство применимо только к файлам, открытым для чтения. Следующий цикл позволяет использовать его для чтения всего файла построчно.

Do While TStream.AtEndOfStream = False

newLine = TStream.ReadLine

{обработка строки}

Loop



Column. Свойство только для чтения, возвращающее номер текущего символа в строке TextStream. Первый символ в строке имеет номер 1. Используйте это свойство для чтения данных, упорядоченных в колонки без знаков табуляции и других разделителей.

Line. Это свойство тоже только для чтения и возвращает номер текущей строки в TextStream. Свойство Line первой строки равно 1.

VB6 в действии: проект MakeFile

Проект MakeFile (см. рис. 20.1) демонстрирует некоторые методы объекта TextStream. Это приложение создает текстовый файл и сохраняет в нем содержимое элемента управления Text Box. Затем открывает файл, считывает текстовые строки и отображает их на том же элементе управления Text Box.

Рис. 20.1. Проект MakeFile: использование объекта TextStream для доступа к текстовому файлу

     Чтобы создать приложение, выполните следующие действия.

1.  Откройте новый Standard ЕХЕ-проект.

2.  Добавьте ссылку на компонент FileSystemObject.

3.  Откройте диалоговое окно References и выберите компонент Microsoft Scripting       Runtime.


4.  Добавьте следующие объявления в окно Code формы:
Dim FSys As New FileSystemObject
Областью видимости переменной FSys
является форма, поэтому она доступна из всех процедур.
5. Поместите элементы управления, показанные на рис. 20.1, на форму и введите код, приведенный в программе 20.1., в обработчики события Click обеих командных кнопок.
Кнопка Create File считывает текст из элемента управления TextBox и записывает его в файл C:\TEXTFILE.TXT текущего каталога. Для записи текста в файл созда­ется объект TStream.
Программа 20.1. Код обработчика события Click кнопки Create File
Private Sub bttnCreateFile_Click()
Dim OutStream As TextStream
TestFile = App.Path & "\textfile.txt"
Set OutStream = FSys.CreateTextFile(TestFile, True, False)
OutStream.WriteLine Text1.Text
Set OutStream = Nothing
End Sub
Щелчок на второй кнопке позволяет считывать содержимое этого файла с помощью другого объекта TextStream. В дополнение к тексту из файла, она выводит строки для выделения считанного из файла текста.
Программа 20.2. Код обработчика события Click кнопки Read File
Private Sub bttnReadFile_Click()
Dim InStream As TextStream
TestFile = App.Path & "\textfile.txt"
Set InStream = FSys.OpenTextFile(TestFile, 1, False, False)
While InStream.AtEndOfStream = False
TLine = InStream.ReadLine
txt = txt & TLine & vbCrLf
Wend
Text1.Text = "The following text was read from the file" & vbCrLf
  '(Следующий текст был считан из файла...)
Text1.Text = Text1.Text & vbCrLf & String(50, "*")
Text1.Text = Text1.Text & vbCrLf & txt
Text1.Text = Text1.Text & vbCrLf & String(50, "*")
Set InStream = Nothing
End Sub
Переменная
FSys представляет файловую систему. InStream
и OutStream - объекты TextStream, методы которого WriteLine и ReadLine использовались для записи и чтения отдельных строк файла. После записи строк в файл обе переменные устанавливаются в Nothing, чтобы освободить выделенные им ресурсы (по сути, эти операторы закрывают файл).
Строки файла читаются в цикле While...Wend, который проверяет значение свойства AtEndOfStream объекта TextStream, чтобы выяснить, сколько строк нужно прочитать из файла.
While InStream.AtEndOfStream = False
TLine = InStream.ReadLine
{обработка переменной TLine}
Wend
На каждой итерации цикла переменная TLine
получает из файла очередную строку текста.

Содержание раздела