Страница: 1 |
Страница: 1 |
Вопрос: VB : как вернуть номер строки?
Добавлено: 28.04.06 21:36
Автор вопроса: __Сергей__
Уважаемые знатоки прошу посоветовать, как вернуть номер строки.
Имеется два текстовых файла ~1mb и ~3mb, из первого читаю строки и ищу их во втором файле, посоветуйте, как вернуть номер строки (с положительным результатом) второго файла
f = FreeFile()
Open FileName2 For Input As f
txt2 = Input(LOF(f), f)
Close f
NumLines2 = UBound(Split(txt2, vbCrLf))
For q = 1 To NumLines1
f = FreeFile()
Open FileName1 For Input As f
For i = 1 To q 'NumLines1
Input #f, str1
Next i
Close f
If Len(str1) > 1 Then
If InStr(UCase(txt2), UCase(str1)) > 0 Then TxtRez.Text = _
TxtRez.Text + " " + str1 + vbCrLf
Else: End If
Next q
End If
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 29.04.06 00:33
Кто ж в цикле кучу раз открывает и закрывает один и тот же файл
Считай оба файла, каждый в свой массив и затем смотри массивы построчно. Примерно так:
Dim cnt1 as long, cnt2 as long, f as long, i as long, j as long
Dim str1 as string, str2 as string
f = FreeFile()
Open FileName1 For Input As f
str1 = Input(LOF(f), f)
Close f
array1 = Split(str1, vbCrLf)
cnt1 = UBound(array1)
Open FileName2 For Input As f
str2 = Input(LOF(f), f)
Close f
array2 = Split(str2, vbCrLf)
cnt2 = UBound(array2)
For i = 1 To cnt1
For j = 1 To cnt2
If CStr(array1(i)) = CStr(array2(j)) Then MsgBox "Line No " & j
Next j
Next i
Сравнение строк может по-другому оформить, чтобы регистронезависимое сравнение было.
Номер ответа: 2
Автор ответа:
__Сергей__
Вопросов: 7
Ответов: 23
Профиль | | #2
Добавлено: 30.04.06 10:10
Спасибо HOOLIGAN!
поиск пользую
If InStr(UCase(CStr(array2(j))), UCase(CStr(array1(i)))) > 0 then '''