Дата публикации статьи: 09.07.2003 00:00
Текстовые файлы встречаются нам повсюду. И эта статья покажет вам основные методы
работы с текстовыми файлами - создание/редактирование, чтение/сохранение, поиск
слова в тексте.
Приступим!
Создайте стандартный проект и наклейте на него текст-бокс с именем "txtText",
укажите у него свойство "MultiLine" равным "True" - "Истина"
и две коммандные кнопки с именами "btnOpen" и "btnSave".
Свойство "Caption" укажите у "btnOpen" - "Открыть",
а у "btnSave" - "Сохранить". Сделайте двойной клик по кнопке
"Сохранить" и в программный код впишите
Open "c:\temp.txt" For Output As #1
Print #1, txtText.Text
Close #1
Поясняю: "Open" это открытие файла "c:\temp.txt" это имя
открываемого файла, если его нет, то он будет создан, если есть, то весь текст
в этом файле будет очищен и заменём текстом из "txtText". "For
output as #1" = "Для выхода под номером 1" т.е открываем файл
под порядковым номером один, для записи информации в него. Вместо единицы можно
указываль любое число от 1 до 500 - это является обязательным параметром. Зато
#'ом можно пренебречь - он как бы для удобства, сразу будет понятно, что эта
единица или другое число относится к файлу, а не к какой-нибудь переменной,
хотя в некоторых местах его нельзя использовать!
"Print #1, txtText" - "Print"(Печать) - Метод позволяющий
влить содержимое "txtText" в файл под номером один.
"Close #1" - это для закрытия текстового файла, так как если он не
будет закрыт, то пока программа не будет закрыта, он не будет доступен другим
программам.
Всё! С этой частью мы разобрались. Запускайие проект, вводите какую-нибудь информацию
в "txtText" и нажимайте кнопку "Сохранить".
Теперь у вас на диске "C:" создан файл с именем "temp.txt".
Но сохранить сохранили, надо же ещё и прочесть...
Чтение файла немного посложнее...
Делайте двойной клик по кнопке "Открыть" и вписывайте
Open "c:\temp.txt" For Input As #1
Do Until EOF(1)
Line Input #1, txt
alltxt = alltxt + txt + vbCrLf
Loop
Close #1
txtText.Text = alltxt
Поясняю: "Open "c:\temp.txt"" - это тоже самое, что и при
сохранении, а "For Input As #1" - это "Для входа под номером
1" т.е только чтение файла.
Do Until EOF(1) - "Читать, пока не будет достигнуть конец файла" т.е
считывать построчно пока не будет достигнута последняя строка в читаемом файле
и это как раз та самая ситуация, в которой нельзя указывать знак # в скобках.
Line Input #1, txt - "Линия входа файла под номером 1 = переменной txt"
alltxt = alltxt + txt + vbCrLf - переменная alltxt равна самой себе, плюс переменная
txt. А vbCrLf - это уникальная константа, которая заменят "Chr(13)+Chr(10)"
т.е переход на новую строку. Если мы её не вставим, то текстовый файл будет
одной строкой в txtText.
Close #1 - закроем файл.
txtText.Text = alltxt - здесь выливаем в текст-бокс открытый файл, содержащийся
в переменной alltxt.
Всё! Можете проверить.
Сохранять и открывать файлы мы научились...а как искать текст в окне...чем
же наша программа хуже обычного блокнота Windows:)
Наклеем на форму ещё один текст-бокс с именем "txtSearch" и ещё одну
кнопку с именем "btnSearch" и свойством "Caption" равным
"Поиск"
Сделаем двойной клик по форме и в раздел "General Declarations" впишем
"Dim P As Integer " - это переменная, которая будет содержать в себе
позицию курсора в текстовом поле. В событие Form_Load впишите "P = 1".
Теперь сделаем двойной клик по кнопке "Поиск" и в программный код
впишем
If InStr(P, txtText.Text, txtSearch.Text) <> 0 Then ' Если искомое слово
присутствует то...
txtText.SetFocus ' Текстовое поле с главным текстом получает фокус:)
txtText.SelStart = InStr(P, txtText.Text, txtSearch.Text) - 1 'Начинаем выделять
слово...
txtText.SelLength = Len(txtSearch.Text) ' Завершаем выделение
P = InStr(P, txtText.Text, txtSearch.Text) + Len(txtSearch.Text) ' Изменяем
переменную на позицию курсора
Else ' Если в тексте больше нет искомого слова, то выводим об этом сообщение.
MsgBox "Искомое слово не найдено"
End If
Всё! Поздравляю! Вы написали текстовый редактор!
|