Программирование
Веб программирование

Поиск в vb

 
 

Сейчас мы сделаем программу, которая будет искать текст. На форму кинь 2 текстовых поля и кнопку.

Вот код:

Dim qw As Long ' qw - переменная, которая будет содержать позицию для поиска
Private Sub Command1_Click() 'При нажатии на кнопку:
If InStr(qw, Text2.Text, Text1.Text) <> 0 Then 'Сверяется 2 текстовых поля
Text2.SetFocus 'На Text2 ставим курсор
Text2.SelStart = InStr(qw, Text2.Text, Text1.Text) - 1 'Устанавливаем курсор перед совпавшимся словом
Text2.SelLength = Len(Text1.Text) 'С помощью функции Len считаем сколько символов в Текстовом поле 1, и столько же выделяем
qw = InStr(qw, Text2.Text, Text1.Text) + Len(Text1.Text) ' Изменяем переменную qw на позицию курсора, для того, чтобы при следующем поиске, не искать уже найденное слово, а искать след. слово
Else ' Если в тексте больше нет искомого слова, то выводим об этом сообщение.
MsgBox "Здесь таких нет!!!"
End If
End Sub
Private Sub Form_Load()
qw = 1
End Sub

Исходник качай отсюда


Есть вопросы? Спроси на нашем форуме!!
Вероничка [19.05.2011 16:06]

хорошая вещь

АкРаМы4 [04.06.2012 04:27]

Классная штука. Очень полезна, если делать города и среди них искать эти города. Спасибо!!!

ilf [09.01.2013 20:23]

Спасибо за код.

BondOs20 [09.03.2014 10:49]

Нужная хреновина!

Stertor370 [09.03.2014 13:47]

А если пользователю нужно найти все вхождения(как кнопка в блокноте - "искать далее")? )))

Stertor370 [09.03.2014 13:52]

Дам подсказку: нужно определять, в каком участке текста пользователь установил курсор(с помощью свойства text.selstart) и задавать это значение в качестве параметра InStr( , Text2.Text, Text1.Text) и по нажатию кнопки или как у вас там отмечать найденные участки, пока selstart не станет равным длине текста- тогда нужно сделать его равным нулю.

Stertor370 [09.03.2014 14:25]

Dim qw As Integer
Dim str As String, substr As String
Private Sub Command1Click()
Dim p 'указатель на начало вхождения подстроки
str = Text2.Text 'оригинальный текст
substr = Text1.Text 'подстрока для поиска

If qw = 0 Then qw = 1 ' искать можно только с позиции 1, иначе instr кинет исключение

p = InStr(qw, str, substr) ' поиск вхождения подстроки в тексте

If p > 0 Then ' если подстрока есть в тексте, то...
Text2.SetFocus
Text2.SelStart = p - 1
Text2.SelLength = Len(substr)
qw = p + Len(substr) + 1
Else
If qw >= Len(str) Then
If MsgBox("Текст не найден, начать с начала?", vbYesNo) = vbYes Then
qw = 1
Command1
Click
End If
Else
MsgBox "текст не найден"
End If
End If
End Sub

Private Sub FormLoad()
qw = 1
End Sub

Private Sub Text2
Click()
Me.Print Text2.SelStart
qw = Text2.SelStart
End Sub

BondOs20 [09.03.2014 20:37]

Stertor , Ты Самоучка ?

Stertor370 [09.03.2014 21:13]

Установи Teamviewer и сообщи мне в личку пароль и ID - я зайду, напишу, как надо.
Дело в том, что сайт иногда "крадет" буквы и некоторые символы из кода, поэтому получается неразбериха.
Я обращаюсь к одминам: чем банить и стирать мои статьи, лучше бы добавили поддержку тегов CODE, как на всех цивилизованных сайтах.

Shade970 [09.03.2014 21:19]

Чтобы запустился авторан с флешки надо создать файл с именем
Autorun.inf
далее в файле написать
[Autorun]
Open=Имя файла запуска

Shade970 [09.03.2014 21:20]

[Autorun]
Open=Test.exe

BondOs20 [09.03.2014 21:29]

Я конечно нуб ,но ненастолько чтоб этого незнать
ктомуже это непашет! Выдаёт окно с выбором вариантов запуска!!

Stertor370 [09.03.2014 21:43]

Все правильно. параметр "Open" срабатывает только с сидюка, но никак не с флешки.

BondOs20 [09.03.2014 22:16]

Втом-то и дело ,но вирус ауторан который распростроняется через флешки кактож запускается!
Знаю так-как Моя флешка неоднократно заражалась!!



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.