Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > зависание программы


Автор: skulida 15.4.2003, 22:24
Снова прошу помочь.
Ситуация следующая: есть большой текстовый файл (4 Мб).
Мне нужно вырезать определенные текстовые блоки начинающиеся
определенными симолами. Каждый из этих блоков нужно записать в переменную и поместить в массив, чтобы затем перемешать блоки в произвольном порядке.
написанный мною код вырезания блоков почему-то виснит при обработке большого n. Т.е. если n = 30 работает , а если 3000 программа виснит

RichText1.Text = ""
b = 0
n = Ubound(TempString)' посчитали количество блоков (выше)
k = 1

For i = 1 To n
a = InStr(k, myString, "&START!") 'ищем вхожднние
If a = 0 Then Exit Sub 'если нет выходим
b = InStr(a, myString, "&END!") 'ищем окончания блока
k = b
c = Mid(myString, a, (b + 4 - a)) 'вырезаем блок

RichText1.Text = RichText1.Text + c & Chr(13) & Chr(10) & Chr(10)
Next i

Прошу помочь и указать на ошибку. Что нужно сделать?

Автор: man2002ua 17.4.2003, 10:18
Может переполняется RichEdit1? Попробуй запустить при n=3000, но закомментируй строку:
RichText1.Text = RichText1.Text + c & Chr(13) & Chr(10) & Chr(10)

Автор: Trojan Lord 17.4.2003, 14:59
сочерание (Chr(13) & Chr(10)) можно заменить на vbNewLine

Автор: Trojan Lord 17.4.2003, 14:59
сочетание (Chr(13) & Chr(10)) можно заменить на vbNewLine

Автор: Guest 18.4.2003, 13:58
Цитата(man2002ua @ 17.4.2003, 10:18)
Может переполняется RichEdit1? Попробуй запустить при n=3000, но закомментируй строку:
RichText1.Text = RichText1.Text + c & Chr(13) & Chr(10) & Chr(10)

да действительно, убрал RichText1 и все заработало.
Спасибо

Автор: Badjo 2.6.2003, 14:41
А ты не пробовал занимаится объявлением переменных? Частенько помогает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)