Рассказываю :
Знакомый зная что я чуть разбираюсь в программировании попросил написать программку, вроде и не сложную....
Есть текстовый фаил(Прикрепил, открывать лучше вордом чтобы видеть форматирование текста ) в котором содержатся группы чисел (Групп около 6500 по 37 чисел в каждой, то есть около 250000 символов ) , задача программы находить в этих группах заданную в поиске последовательность чисел в пределах группы и выдавать число идущее за ними. К примеру мы ищем "30 36 14" программа находит его в группе 1
1, 3 12 20 22 1 18 30 36 14 25 23 28 4 31 33 29 10 35 13 2 17 32 7 21 19 27 26 9 24 15 8 16 5 0 34 11 6
и должна выдать число идущее за ней, то есть 25.
Ну как новичку мне не пришло в голову ничего лучше чем загрузить текстовый фаил в RichText(Именно в него, для того что бы можно было находить символ перехода на новую строку(В Textbox он почему то теряется) , который по сути является началом новой группы) и далее циклом посимвольно вытаскивать с него группы и записывать их в String массив на 10000 ячеек(С запасом потому что групп может быть и больше 6500) . Далее уже проводить поиск непосредственно в массиве и заносить удовлетворяющее результатам поиска в Listbox (Совпадений скорее всего будет множество и все нужно отобразить одновременно).Написал вот такой код (Здесь только часть отвечающая за занесения инфы в массив)
- Код: Выделить всё
Dim sek As Long
sek = 0
Dim lens As Long
Dim rew As Long
lens = Len(RichTextBox1.Text)
ProgressBar1.Max = lens
Dim midi As String
For rew = 1 To lens
midi = Mid(RichTextBox1.Text, rew, 1)
If midi = Chr(10) Then
sek = sek + 1
Else
Mass(sek) = Mass(sek) + midi
End If
ProgressBar1 = rew
Next
Ну и в общем работает, но тормозит просто жутко ! Одно занесение инфы в массив занимает наверно около получаса а может и час(не хватало терпения дождаться).
Собственно сам вопрос, можно ли как то отпимизировать это дело что бы оно работало быстрее !? Возможно можно как то избавиться от цикла, или у кого то возникнут идеи как выделить из текста группы не прибегая к посимвольному перебору циклом... Использую 6й VisualBasic .
Заранее спасибо.