powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно ускорить разборку строки ?
9 сообщений из 9, страница 1 из 1
Как можно ускорить разборку строки ?
    #37377418
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !!!
Столкнулся с таким нюансом...
Из БД в некую переменную получаю данные.
Примерно 10000 строк.
Получаю быстро где-то 2 сек.
А вот после разборки больше 2 мин .
Что я делаю неправильно ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...................
 Ret = m.XecuteGTM("ZWR " & txtNod1.Text & "")
    cnt = UBound(Split(Ret, "^"))
    ' До сюда 2 сек !!!
    For i =  1  To cnt
      Ret1 = Split(Ret, "^")
        arrayX = arrayX & "^" & Ret1(i) & vbCrLf
     Next i
    frmOutput.txtOut.Text = arrayX
    ' Здесь уже больше 2 мин ...

Если сразу присвоить :
Код: plaintext
1.
 frmOutput.txtOut.Text= Ret
тоже все быстро, только без vbCrLf, те как есть

Спасибо.
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37377454
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim arr() as String
Dim arr2() as String
Dim i as Long
Dim cnt as Long

Ret = m.XecuteGTM("ZWR " & txtNod1.Text & "")
arr = Split(Ret, "^")
cnt = UBound(arr)

Redim arr2(cnt- 1 )

    For i =  1  To cnt
        arr2(i- 1 ) = "^" & arr(i)
   Next

arrayX = Join(arr2,vbCrLf)
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37377481
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
By Konst_One

Огромное спасибо !!!
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37377688
Valeriu...
Если сразу присвоить :
Код: plaintext
1.
 frmOutput.txtOut.Text= Ret
тоже все быстро, только без vbCrLf, те как есть

А если не сразу присвоить?
Код: plaintext
frmOutput.txtOut.Text= Replace(Ret, "^", vbCrLf & "^")

ЗЫ: смотрел-смотрел на split по '^' , ( читай: поудаляли '^' )
потом конкатенацию в цикле с '^' ,
потом join c vbCrLf
так и не понял всей глубины замысла :'(
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37380966
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде с этим разобрался, но вот еще одна проблема.
В полученной строке :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 ......................
^AVANS( 6001 , 200804 , 22 )=" 3600 : 108 . 00 : 180 . 00 : 379 . 94 "
^AVANS( 6001 ,"Test", 23 )=" 2000 : 60 . 00 : 100 . 00 : 114 . 22 "
^AVANS( 6007 , 200806 , 20 )=" 500 : 15 . 00 : 25 . 00 : 82 . 80 "
^AVANS( 6007 , 200810 , 28 )=" 1500 : 45 . 00 : 75 . 00 : 255 . 6 "
^AVANS( 6007 , 200812 , 9 )=" 4000 : 120 . 00 : 200 . 00 : 662 . 40 "
^AVANS( 6008 , 201005 , 12 )=" 1500 : 52 . 50 : 90 . 00 : 311 . 85 "
^AVANS( 6023 , 200712 , 5 )= 2000 
................
Нужно избавится от кавычек ТОЛЬКО с правой стороны строки после равно (=)
Без потери той же производительности желательно.
Буду благодарен за любые предложения.
Спасибо.
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37380983
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, забыл уточнить.
Только в начале (=") и в конце строки
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37381612
Valeriu,

Код: plaintext
1.
2.
3.
replace( _
replace( ваша_строка, "=""", "="), _
"""" & vbCrLf, vbCrLf)
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37381790
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем

Спасибо.
Я С Вами полностью согласен, но они еще и в конце строки есть ...
В смысле кавычки.
...
Рейтинг: 0 / 0
Как можно ускорить разборку строки ?
    #37381891
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я применил оба подхода и Konst_One и пробуй камнем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Ret = m.XecuteGTM("ZWR " & lvItem.Text & "")
arr = Split(Ret, "^")
cnt = UBound(arr)
ReDim arr2(cnt -  1 )
    For i =  1  To cnt
        ln = Len(arr(i))
        str = Left$(arr(i), ln -  1 )
        arr2(i -  1 ) = "^" & Replace(Replace(str, "=""", "="), """" & vbCrLf, vbCrLf)
    Next
arrayX = Join(arr2, vbCrLf)
frmGlobalEdit.gb.Text = arrayX

Спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно ускорить разборку строки ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]