Прога ВИСНЕТ при поиске в 12 текстовиках...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Прога ВИСНЕТ при поиске в 12 текстовиках...

Сообщение cashman » 10.01.2005 (Пн) 1:07

Процедура такая:
вводится слово "..."
потом его ищет в 1.txt, затем в 2.txt и т.д.
все строки где оно встречалось выводит в textbox
ПРОБЛЕМА в том, если юзверь введет скажем "пробел", то прога находя его в каждой строке просто подвешивает себя.
Сделал: если text1.text = " " то не искать + сообщения "мол, сам дурак", Но это не подойдет так как в текст пронизан пробелами по 10 штук подрят...
аналогично если юзверь ввел скажем "а" - тот же результат...
Как сделать чтоб не висла???...

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 10.01.2005 (Пн) 1:10

может минимальную длину вводимого слова задать?
также можно искать, если например в строке поиска одни проблемы, то не искать и сделать некий словарик исключений :roll:

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 10.01.2005 (Пн) 1:19

минимальная длинна слова :shock: - это неплохо, попробую
а как прогу притормаживать, т.е. чтобы не торопилась искать и себя подвешивать, а не торопясь, не дергаясь все пережевала и не зависла (DoEvents - пробовал вставлять между открытием следующего *.txt - не помогло).

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 10.01.2005 (Пн) 3:20

если например в строке поиска одни проблемы

Проблемы, или все же пробелы :?:

Попробуй вот так:
Код: Выделить всё
dim s as string
dim lCounter as long
dim sResult as string
dim whatfind as string
whatfind = text1.text 'обязательно так быстрее
open "1.txt" for input as #1
do until eof(1)
lcounter = lcounter +1
line input #1,s
if instr(s,whatfind) > 0 then sResult = sResult & s & vbcrlf
if lcounter mod 10 =0 then doevents
loop
text2.text = text2.text & sresult
close #1
الفيجوال بيسك الرابح

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 10.01.2005 (Пн) 9:15

Используй функцию Trim (она "отрезает" все пробелы справа и слева).
Потом если длина слова, которое требуется искать, равна 0, тогда выход с надписью "сам дурак"

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 11.01.2005 (Вт) 0:26

2GM
попробую... а что искать "переменную" быстрее чем "текст" из text1.texе???
2Sirik
Я не пользовался функцией Trim... дай пример кода (желательно полный, чтоб не пришлось гадать еще над теми редкими вещами которых я не знаю)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.01.2005 (Вт) 0:49

Ну не понятно только одно - каким способом ты ищешь.
Я, где только возможно, использую RTB - и не тормозит, и ищет ВСЕ. :wink:

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 11.01.2005 (Вт) 2:35

cashman писал(а):2GM
попробую... а что искать "переменную" быстрее чем "текст" из text1.texе???
2Sirik
Я не пользовался функцией Trim... дай пример кода (желательно полный, чтоб не пришлось гадать еще над теми редкими вещами которых я не знаю)

Да, обращение к переменной, быстрее чем к объекту.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.01.2005 (Вт) 4:51

GM писал(а):
cashman писал(а):2GM
попробую... а что искать "переменную" быстрее чем "текст" из text1.texе???

Да, обращение к переменной, быстрее чем к объекту.

Обращение - да, но поиск в них выполняется одинаково быстро. Если текст большой, то разница из-за медленного обращения будет незаметна.
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 11.01.2005 (Вт) 8:46

tyomitch писал(а):
GM писал(а):
cashman писал(а):2GM
попробую... а что искать "переменную" быстрее чем "текст" из text1.texе???

Да, обращение к переменной, быстрее чем к объекту.

Обращение - да, но поиск в них выполняется одинаково быстро. Если текст большой, то разница из-за медленного обращения будет незаметна.

Я просто вспомнил 20 textbox'ом в которых были числа, и я сравнивал совпадали ли они с данными, объем был большой, так что разница была очень заметна. Да и если такой вариант тоже работает почему бы им не воспользоватся :?:
الفيجوال بيسك الرابح

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 11.01.2005 (Вт) 9:03

Данный пример просто "убивает" все лишние пробелы (из-за которых у тебя и были тормоза):
Код: Выделить всё
Text1.Text = Trim(Text1.Text)

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 12.01.2005 (Ср) 0:17

2Sirik
сперва был в восторге от функции Trim, но вскоре понял что она мне не совсем подходит, т.к. ищем "пар" и выводим все где он встречается. Но если встречается "паром", то прога считает, что нашла верно.
Но мне нужен только "пар" и если я раньше мог ввести "пар " (т.е. с пробелом), то теперь функция Trim этой возможности не дает.
2tyomitch & GM
"текст большой" - это ты говоришь об искомом тексте или тексте в котором мы ищем.
P.S. Пример, Ищем: ("." & 10 & "." & peremennaya)
вот это все выражение в скобках для увеличения скорости поиска лучше занести в отдельную переменную, или нет смысла писать еще одну строчку кода?..

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.01.2005 (Ср) 8:44

2cashman
Я имею ввиду что при частой обращении к объекту скорость падает. Т.Е. ты цыклом проходиш по каждой строке файла и с помощью
instr смотриш есть ли там это слово, так вот ты каждый раз обращаешся к Text1, откуда возможные тормоза.
Вот тут пример, сможеш заценить разницу в скорости:
Код: Выделить всё
Private Sub Form_Load()
Dim i As Long
Dim l As Single
MsgBox "Считывание с Text1"
l = Timer
For i = 1 To 500000
If Text1.Text = "Some text" Then
End If
Next
MsgBox Timer - l & " c."
MsgBox "Считывание с переменной"
l = Timer
Dim s As String
s = Text1.Text
For i = 1 To 500000
If s = "Some text" Then
End If
Next
MsgBox Timer - l & " c."
End Sub
الفيجوال بيسك الرابح

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 12.01.2005 (Ср) 16:14

>>Я не пользовался функцией Trim...

+_+ +_+ +_+

А у меня во всех прогах самая популярная функция Trim... Я вообще не представляю, как можно работать с файлами текста без нее...
Короче, Trim рулез!

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 12.01.2005 (Ср) 21:31

Вернее, Trim$. Он быстрее, поскольку принимает и возвращает строку, а не универсальный тип Variant, который тормозит :)
Моду создают модоки, а распространяют модозвоны.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 1:42

2hCORe: как вообще может тип тормозить? Тормозить может какое-то действие.
Изображение

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 13.01.2005 (Чт) 1:50

прошу прощения у модераторов, но повторюсь, т.к. вопрос остался незамеченным:
Я сперва был в восторге от функции Trim, но вскоре понял что она мне не совсем подходит, т.к. ищем "пар" и выводим все где он встречается. Но если встречается "паром", то прога считает, что нашла верно.
Но мне нужен только "пар" и если я раньше мог ввести "пар " (т.е. с пробелом), то теперь функция Trim этой возможности не дает.
Есть функция которая убирает пробелы? скажем слева от курсора, или иной ваш вариант, который поможет со словом "пар"???

Qubicz
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 16.10.2004 (Сб) 20:21
Откуда: Санкт-Петербург

Сообщение Qubicz » 13.01.2005 (Чт) 7:30

LTrim()


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 16

    TopList  
cron